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); \