From: Roland McGrath Date: Tue, 11 Dec 2012 17:42:07 +0000 (-0800) Subject: nm: Fix size passed to snprintf for invalid sh_name case. X-Git-Tag: elfutils-0.156~65 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=57bd66cabf6e6b9ecf622cdbf350804897a8df58;p=thirdparty%2Felfutils.git nm: Fix size passed to snprintf for invalid sh_name case. Signed-off-by: Roland McGrath --- diff --git a/src/ChangeLog b/src/ChangeLog index 9f0c525ac..f08ee0848 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-12-11 Roland McGrath + + * nm.c (show_symbols_sysv): Fix size passed to snprintf for invalid + sh_name case. + Reported by David Abdurachmanov . + 2012-10-16 Mark Wielaard * readelf.c (print_ops): DW_OP_skip and DW_OP_bra targets are diff --git a/src/nm.c b/src/nm.c index f50da0b1e..8a1c57a49 100644 --- a/src/nm.c +++ b/src/nm.c @@ -769,8 +769,9 @@ show_symbols_sysv (Ebl *ebl, GElf_Word strndx, const char *fullname, gelf_getshdr (scn, &shdr_mem)->sh_name); if (unlikely (name == NULL)) { - name = alloca (sizeof "[invalid sh_name 0x12345678]"); - snprintf (name, sizeof name, "[invalid sh_name %#" PRIx32 "]", + const size_t bufsz = sizeof "[invalid sh_name 0x12345678]" + name = alloca (bufsz); + snprintf (name, bufsz, "[invalid sh_name %#" PRIx32 "]", gelf_getshdr (scn, &shdr_mem)->sh_name); } scnnames[elf_ndxscn (scn)] = name;