commit:     871ce9d5e16d289bc1547781fe209086ea771e32
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 12 22:08:19 2015 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Sat Dec 12 22:08:19 2015 +0000
URL:        https://gitweb.gentoo.org/proj/pax-utils.git/commit/?id=871ce9d5

dumpelf: handle invalid section names

 dumpelf.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/dumpelf.c b/dumpelf.c
index 5617f33..8abad61 100644
--- a/dumpelf.c
+++ b/dumpelf.c
@@ -223,6 +223,13 @@ static void dump_phdr(elfobj *elf, const void *phdr_void, 
long phdr_cnt)
 static void dump_shdr(elfobj *elf, const void *shdr_void, long shdr_cnt, const 
char *name)
 {
        unsigned long i;
+
+       /* Make sure the string is valid. */
+       if ((void *)name >= elf->data_end)
+               name = "<corrupt>";
+       else if (memchr(name, 0, elf->len - (name - elf->data)) == NULL)
+               name = "<corrupt>";
+
 #define DUMP_SHDR(B) \
        if (elf->elf_class == ELFCLASS ## B) { \
        const Elf ## B ## _Shdr *shdr = SHDR ## B (shdr_void); \

Reply via email to