[PATCH 2/5] libdwfl/offline.c: Avoid closing invalid fd

Aaron Merey amerey@redhat.com
Fri Jan 31 02:35:51 GMT 2025


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 <amerey@redhat.com>
---
 libdwfl/offline.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

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;
-- 
2.48.1



More information about the Elfutils-devel mailing list