From: Mark Wielaard Date: Sat, 8 Feb 2025 23:07:13 +0000 (+0100) Subject: readelf: Handle NULL phdr in handle_dynamic_symtab X-Git-Tag: elfutils-0.193~45 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b38e562a4c907e08171c76b8b2def8464d5a104a;p=thirdparty%2Felfutils.git readelf: Handle NULL phdr in handle_dynamic_symtab A corrupt ELF file can have broken program headers, in which case gelf_getphdr returns NULL. This could crash handle_dynamic_symtab while searching for the PT_DYNAMIC phdr. Fix this by checking whether gelf_phdr returns NULL. * src/readelf.c (handle_dynamic_symtab): Check whether gelf_getphdr returns NULL. https://sourceware.org/bugzilla/show_bug.cgi?id=32655 Signed-off-by: Mark Wielaard --- diff --git a/src/readelf.c b/src/readelf.c index c43fda35..21b92a08 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -2912,7 +2912,7 @@ handle_dynamic_symtab (Ebl *ebl) for (size_t i = 0; i < phnum; ++i) { phdr = gelf_getphdr (ebl->elf, i, &phdr_mem); - if (phdr->p_type == PT_DYNAMIC) + if (phdr == NULL || phdr->p_type == PT_DYNAMIC) break; } if (phdr == NULL)