Memory leak in dwarf2.c
authorAlan Modra <amodra@gmail.com>
Mon, 2 Sep 2019 00:24:55 +0000 (09:54 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 2 Sep 2019 00:38:17 +0000 (10:08 +0930)
This fixes a small leak of debug_filename.  bfd_openr copies the file
name since git commit 1be5090bca.

PR 11983
* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Free debug_filename
on success.  Tidy.

bfd/ChangeLog
bfd/dwarf2.c

index 2b06383..47f694a 100644 (file)
@@ -1,3 +1,9 @@
+2019-09-02  Alan Modra  <amodra@gmail.com>
+
+       PR 11983
+       * dwarf2.c (_bfd_dwarf2_slurp_debug_info): Free debug_filename
+       on success.  Tidy.
+
 2019-08-31  Jim Wilson  <jimw@sifive.com>
 
        PR 23825
index a8beec4..88638b9 100644 (file)
@@ -4385,18 +4385,20 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd, bfd *debug_bfd,
           fail more quickly.  */
        return FALSE;
 
+      debug_bfd = bfd_openr (debug_filename, NULL);
+      free (debug_filename);
+      if (debug_bfd == NULL)
+       /* FIXME: Should we report our failure to follow the debuglink ?  */
+       return FALSE;
+
       /* Set BFD_DECOMPRESS to decompress debug sections.  */
-      if ((debug_bfd = bfd_openr (debug_filename, NULL)) == NULL
-         || !(debug_bfd->flags |= BFD_DECOMPRESS,
-              bfd_check_format (debug_bfd, bfd_object))
+      debug_bfd->flags |= BFD_DECOMPRESS;
+      if (!bfd_check_format (debug_bfd, bfd_object)
          || (msec = find_debug_info (debug_bfd,
                                      debug_sections, NULL)) == NULL
          || !bfd_generic_link_read_symbols (debug_bfd))
        {
-         if (debug_bfd)
-           bfd_close (debug_bfd);
-         /* FIXME: Should we report our failure to follow the debuglink ?  */
-         free (debug_filename);
+         bfd_close (debug_bfd);
          return FALSE;
        }