nm: Fix size passed to snprintf for invalid sh_name case.
Signed-off-by: Roland McGrath <roland@hack.frob.com>
diff --git a/src/ChangeLog b/src/ChangeLog
index 9f0c525..f08ee08 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2012-12-11 Roland McGrath <roland@hack.frob.com>
+
+ * nm.c (show_symbols_sysv): Fix size passed to snprintf for invalid
+ sh_name case.
+ Reported by David Abdurachmanov <David.Abdurachmanov@cern.ch>.
+
2012-10-16 Mark Wielaard <mjw@redhat.com>
* readelf.c (print_ops): DW_OP_skip and DW_OP_bra targets are
diff --git a/src/nm.c b/src/nm.c
index f50da0b..8a1c57a 100644
--- a/src/nm.c
+++ b/src/nm.c
@@ -769,8 +769,9 @@
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;