From: Mark Wielaard Date: Tue, 19 May 2015 10:58:49 +0000 (+0200) Subject: libdwfl: Don't stack allocate alternate_name in dwfl_linux_kernel_find_elf. X-Git-Tag: elfutils-0.162~39 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=08e5ae6fc821553d1b81d7e7bc41bfd6f0071967;p=thirdparty%2Felfutils.git libdwfl: Don't stack allocate alternate_name in dwfl_linux_kernel_find_elf. Signed-off-by: Mark Wielaard --- diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index d06d34df8..ef0397301 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,8 @@ +2015-05-19 Mark Wielaard + + * linux-kernel-modules.c (dwfl_linux_kernel_find_elf): malloc and + free alternate_name. + 2015-05-19 Mark Wielaard * linux-kernel-modules.c (dwfl_linux_kernel_report_offline): Don't diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c index cb5686802..236e2cd21 100644 --- a/libdwfl/linux-kernel-modules.c +++ b/libdwfl/linux-kernel-modules.c @@ -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; }