From: Aaron Merey Date: Fri, 31 Jan 2025 01:16:11 +0000 (-0500) Subject: libdwfl/offline.c: Avoid closing invalid fd X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc1a6c088f2f5cdd2eb1dbf7856e50f6d6f7869f;p=thirdparty%2Felfutils.git libdwfl/offline.c: Avoid closing invalid fd process_archive may be called with an fd argument of -1, which libelf interprets as "no file opened". However when closing the fd process_archive does not check whether the fd is valid and may attempt to close an fd of -1. Signed-off-by: Aaron Merey --- diff --git a/libdwfl/offline.c b/libdwfl/offline.c index 24e9e180..dc099d2b 100644 --- a/libdwfl/offline.c +++ b/libdwfl/offline.c @@ -271,7 +271,8 @@ process_archive (Dwfl *dwfl, const char *name, const char *file_name, int fd, zero, that module will close FD. If no modules survived the predicate, we are all done with the file right here. */ if (mod != NULL /* If no modules, caller will clean up. */ - && elf_end (archive) == 0) + && elf_end (archive) == 0 + && fd >= 0) close (fd); return mod;