This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] Fix descriptor leak when calling dlopen with RTLD_NOLOAD
- From: Andreas Schwab <schwab at redhat dot com>
- To: libc-alpha at sourceware dot org
- Date: Tue, 06 Oct 2009 13:48:09 +0200
- Subject: [PATCH] Fix descriptor leak when calling dlopen with RTLD_NOLOAD
2009-10-06 Andreas Schwab <schwab@redhat.com>
* elf/dl-load.c (_dl_map_object_from_fd): Close fd before
returning if RTLD_NOLOAD.
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 0b896d9..597193c 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -903,9 +903,12 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
#endif
if (mode & RTLD_NOLOAD)
- /* We are not supposed to load the object unless it is already
- loaded. So return now. */
- return NULL;
+ {
+ /* We are not supposed to load the object unless it is already
+ loaded. So return now. */
+ __close (fd);
+ return NULL;
+ }
/* Print debugging message. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0))
--
1.6.4.4
Andreas.
--
Andreas Schwab, schwab@redhat.com
GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84 5EC7 45C6 250E 6F00 984E
"And now for something completely different."