From: Mark Wielaard Date: Sun, 28 Apr 2019 15:06:50 +0000 (+0200) Subject: elfcmp: Handle bad sections without crashing. X-Git-Tag: elfutils-0.177~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3383bb128c6984d49542951bffa15d3decc7ec0;p=thirdparty%2Felfutils.git elfcmp: Handle bad sections without crashing. If we cannot get the Shdr of a section then don't try to use or compare them. Signed-off-by: Mark Wielaard --- diff --git a/src/ChangeLog b/src/ChangeLog index 57db6cadb..3786f3432 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2019-04-28 Mark Wielaard + + * elfcmp.c (main): Check shdr1 and shdr2 are not NULL. + 2019-04-03 Mark Wielaard * readelf.c (attr_callback): Print DW_AT_data_member_location as diff --git a/src/elfcmp.c b/src/elfcmp.c index d5dc1ff2b..c07fdfd7f 100644 --- a/src/elfcmp.c +++ b/src/elfcmp.c @@ -269,7 +269,7 @@ main (int argc, char *argv[]) if (shdr1 != NULL) sname1 = elf_strptr (elf1, shstrndx1, shdr1->sh_name); } - while (scn1 != NULL + while (scn1 != NULL && shdr1 != NULL && ebl_section_strip_p (ebl1, shdr1, sname1, true, false)); GElf_Shdr shdr2_mem; @@ -282,10 +282,10 @@ main (int argc, char *argv[]) if (shdr2 != NULL) sname2 = elf_strptr (elf2, shstrndx2, shdr2->sh_name); } - while (scn2 != NULL + while (scn2 != NULL && shdr2 != NULL && ebl_section_strip_p (ebl2, shdr2, sname2, true, false)); - if (scn1 == NULL || scn2 == NULL) + if (scn1 == NULL || scn2 == NULL || shdr1 == NULL || shdr2 == NULL) break; if (gaps != gaps_ignore && (shdr1->sh_flags & SHF_ALLOC) != 0)