]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
libdwfl: Don't leak fd on error in linux-proc-maps.c (grovel_auxv).
authorMark Wielaard <mjw@redhat.com>
Thu, 15 May 2014 14:03:59 +0000 (16:03 +0200)
committerMark Wielaard <mjw@redhat.com>
Thu, 15 May 2014 14:03:59 +0000 (16:03 +0200)
Signed-off-by: Mark Wielaard <mjw@redhat.com>
libdwfl/ChangeLog
libdwfl/linux-proc-maps.c

index 2cf075212f6379da8ab10687197ad632fbea0c10..2fd2a1a35b605cb0a8232fd0ff4f26ba0960624e 100644 (file)
@@ -1,3 +1,7 @@
+2014-05-15  Mark Wielaard  <mjw@redhat.com>
+
+       * linux-proc-maps.c (grovel_auxv): Close fd on error.
+
 2014-05-02  Mark Wielaard  <mjw@redhat.com>
 
        * dwfl_module_getdwarf: Remove ENABLE_DWZ ifdefs so find_debug_altlink
index b6620ac5564247483b5db4ee19d41f34c7a61349..d0858342014e1173d8db395908c834b2334fc74b 100644 (file)
@@ -116,7 +116,11 @@ grovel_auxv (pid_t pid, Dwfl *dwfl, GElf_Addr *sysinfo_ehdr)
       eu_static_assert (sizeof d.a64 == sizeof d.a32);
       nread = pread_retry (fd, d.a64, sizeof d.a64, offset);
       if (nread < 0)
-       return errno;
+       {
+         int ret = errno;
+         close (fd);
+         return ret;
+       }
       for (size_t a32i = 0; a32i < nread / sizeof d.a32[0]; a32i++)
        {
          const Elf32_auxv_t *a32 = d.a32 + a32i;