From: Aaron Merey Date: Wed, 1 Nov 2023 20:15:16 +0000 (-0400) Subject: dwfl_offline_section_address: replace asserts with early return X-Git-Tag: elfutils-0.190~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a34c5faad861efdd26d1c52b4f8d9d4077e03131;p=thirdparty%2Felfutils.git dwfl_offline_section_address: replace asserts with early return dwfl_offline_section_address asserts that the current module is ET_REL. A possibly corrupt .gnu_debuglink can cause an abort by calling dwfl_offline_section_address on an ET_DYN module. Prevent this abort and similar ones by replacing dwfl_offline_section_address initial asserts with an early return. https://sourceware.org/bugzilla/show_bug.cgi?id=30980 Signed-off-by: Aaron Merey --- diff --git a/libdwfl/offline.c b/libdwfl/offline.c index e090b42bb..52539fe37 100644 --- a/libdwfl/offline.c +++ b/libdwfl/offline.c @@ -50,10 +50,11 @@ dwfl_offline_section_address (Dwfl_Module *mod, const GElf_Shdr *shdr __attribute__ ((unused)), Dwarf_Addr *addr) { - assert (mod->e_type == ET_REL); - assert (shdr->sh_addr == 0); - assert (shdr->sh_flags & SHF_ALLOC); - assert (shndx != 0); + if (mod->e_type != ET_REL + || shdr->sh_addr != 0 + || !(shdr->sh_flags & SHF_ALLOC) + || shndx == 0) + return -1; if (mod->debug.elf == NULL) /* We are only here because sh_addr is zero even though layout is complete.