diff options
author | Mike Frysinger <vapier@gentoo.org> | 2015-12-12 17:08:19 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2015-12-12 17:08:19 -0500 |
commit | 871ce9d5e16d289bc1547781fe209086ea771e32 (patch) | |
tree | 85837120a6e7afc0b5e371ee1b56d1423d432e54 /dumpelf.c | |
parent | dumpelf: constify pointers (diff) | |
download | pax-utils-871ce9d5e16d289bc1547781fe209086ea771e32.tar.gz pax-utils-871ce9d5e16d289bc1547781fe209086ea771e32.tar.bz2 pax-utils-871ce9d5e16d289bc1547781fe209086ea771e32.zip |
dumpelf: handle invalid section names
Diffstat (limited to 'dumpelf.c')
-rw-r--r-- | dumpelf.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -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); \ |