]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
libdwfl: Don't stack allocate alternate_name in dwfl_linux_kernel_find_elf.
authorMark Wielaard <mjw@redhat.com>
Tue, 19 May 2015 10:58:49 +0000 (12:58 +0200)
committerMark Wielaard <mjw@redhat.com>
Wed, 27 May 2015 21:04:31 +0000 (23:04 +0200)
Signed-off-by: Mark Wielaard <mjw@redhat.com>
libdwfl/ChangeLog
libdwfl/linux-kernel-modules.c

index d06d34df879038c511128df4b8350ece143e2ced..ef0397301b5a20b4a0a0896d8835b858ef45318f 100644 (file)
@@ -1,3 +1,8 @@
+2015-05-19  Mark Wielaard  <mjw@redhat.com>
+
+       * linux-kernel-modules.c (dwfl_linux_kernel_find_elf): malloc and
+       free alternate_name.
+
 2015-05-19  Mark Wielaard  <mjw@redhat.com>
 
        * linux-kernel-modules.c (dwfl_linux_kernel_report_offline): Don't
index cb56868026b74161cb65bc886a95d18597663112..236e2cd214c04c67b47867709ec39ea54df4c482 100644 (file)
@@ -707,7 +707,12 @@ dwfl_linux_kernel_find_elf (Dwfl_Module *mod,
      two files when either a '_' or '-' appears in a module name, one using
      only '_' and one only using '-'.  */
 
-  char alternate_name[namelen + 1];
+  char *alternate_name = malloc (namelen + 1);
+  if (unlikely (alternate_name == NULL))
+    {
+      free (modulesdir[0]);
+      return ENOMEM;
+    }
   inline bool subst_name (char from, char to)
     {
       const char *n = memchr (module_name, from, namelen);
@@ -757,6 +762,7 @@ dwfl_linux_kernel_find_elf (Dwfl_Module *mod,
              *file_name = strdup (f->fts_path);
              fts_close (fts);
              free (modulesdir[0]);
+             free (alternate_name);
              if (fd < 0)
                free (*file_name);
              else if (*file_name == NULL)
@@ -782,6 +788,7 @@ dwfl_linux_kernel_find_elf (Dwfl_Module *mod,
 
   fts_close (fts);
   free (modulesdir[0]);
+  free (alternate_name);
   errno = error;
   return -1;
 }