summaryrefslogtreecommitdiffstats
path: root/src/elfcmp.c
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2017-03-24 14:10:26 +0100
committerMark Wielaard <[email protected]>2017-04-03 23:47:59 +0200
commitb0b58c5e0b34e54194aa042f2310af58ee7de603 (patch)
tree833f7fb0c98218a3af8450f8d5171e320b4f20d3 /src/elfcmp.c
parent9d84fdd78705d7a1b9947a9f4ca77fbccdd76d4a (diff)
Use the empty string for note names with zero size (without any data).
ELF notes can have a zero sized name. In which case there is no data at all (so also no zero terminator). Make sure to use the empty string for such notes if the code does not otherwise explicitly check n_namesz. https://sourceware.org/bugzilla/show_bug.cgi?id=21300 Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'src/elfcmp.c')
-rw-r--r--src/elfcmp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/elfcmp.c b/src/elfcmp.c
index 7673cf21..50464207 100644
--- a/src/elfcmp.c
+++ b/src/elfcmp.c
@@ -419,7 +419,8 @@ main (int argc, char *argv[])
&& (off1 = gelf_getnote (data1, off1, &note1,
&name_offset, &desc_offset)) > 0)
{
- const char *name1 = data1->d_buf + name_offset;
+ const char *name1 = (note1.n_namesz == 0
+ ? "" : data1->d_buf + name_offset);
const void *desc1 = data1->d_buf + desc_offset;
if (off2 >= data2->d_size)
{
@@ -435,7 +436,8 @@ main (int argc, char *argv[])
error (2, 0, gettext ("\
cannot read note section [%zu] '%s' in '%s': %s"),
elf_ndxscn (scn2), sname2, fname2, elf_errmsg (-1));
- const char *name2 = data2->d_buf + name_offset;
+ const char *name2 = (note2.n_namesz == 0
+ ? "" : data2->d_buf + name_offset);
const void *desc2 = data2->d_buf + desc_offset;
if (note1.n_namesz != note2.n_namesz