From: Anton Moryakov Date: Tue, 4 Feb 2025 21:50:23 +0000 (+0300) Subject: objdump: Handle elf_getarhdr returning NULL in handle_ar X-Git-Tag: elfutils-0.193~53 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6c76ce7331e82a6fc6c2004e8e6ae51ca91f51d7;p=thirdparty%2Felfutils.git objdump: Handle elf_getarhdr returning NULL in handle_ar Report of the static analyzer: Pointer, returned from function 'elf_getarhdr' at objdump.c:314, may be NULL and is dereferenced at objdump.c:317. (CWE-476, CWE-690) Corrections explained: When processing archive elements, the code could dereference a NULL pointer if 'elf_getarhdr' returns NULL. This patch adds a check to ensure 'arhdr' is not NULL before using it. The fix ensures that the function safely handles cases where 'elf_getarhdr' fails, avoiding potential crashes. Triggers found by static analyzer Svace. Signed-off-by: Anton Moryakov --- diff --git a/src/objdump.c b/src/objdump.c index 1b38da23..1f72eab8 100644 --- a/src/objdump.c +++ b/src/objdump.c @@ -313,7 +313,8 @@ handle_ar (int fd, Elf *elf, const char *prefix, const char *fname, Elf_Arhdr *arhdr = elf_getarhdr (subelf); /* Skip over the index entries. */ - if (strcmp (arhdr->ar_name, "/") != 0 + if (arhdr != NULL + && strcmp (arhdr->ar_name, "/") != 0 && strcmp (arhdr->ar_name, "//") != 0) { if (elf_kind (subelf) == ELF_K_ELF)