Signed-off-by: Mark Wielaard <m...@redhat.com> --- libelf/ChangeLog | 5 +++++ libelf/elf_begin.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/libelf/ChangeLog b/libelf/ChangeLog index cf168e7..7406509 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,8 @@ +2014-12-15 Mark Wielaard <m...@redhat.com> + + * elf_begin.c (read_long_names): Clear any garbage left in the + name table. + 2014-12-11 Mark Wielaard <m...@redhat.com> * elf_begin.c (file_read_elf): Correct ELF64 section offset check. diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c index 7fb5fa5..c24a364 100644 --- a/libelf/elf_begin.c +++ b/libelf/elf_begin.c @@ -734,10 +734,14 @@ read_long_names (Elf *elf) runp = newp; while (1) { + char *startp = runp; runp = (char *) memchr (runp, '/', newp + len - runp); if (runp == NULL) - /* This was the last entry. */ - break; + { + /* This was the last entry. Clear any left overs. */ + memset (startp, '\0', newp + len - startp); + break; + } /* NUL-terminate the string. */ *runp = '\0'; -- 1.8.3.1