Tidy memory on addr2line failures
authorAlan Modra <amodra@gmail.com>
Wed, 29 Mar 2023 11:33:35 +0000 (22:03 +1030)
committerAlan Modra <amodra@gmail.com>
Thu, 30 Mar 2023 04:48:02 +0000 (15:18 +1030)
* addr2line.c (process_file): Close bfd on error paths.

binutils/addr2line.c

index afe116a235cfe04183ea5ded34ae2fca140cd0ab..b07302ddc99055d397f4a9dc13381a2b39f443a4 100644 (file)
@@ -451,6 +451,7 @@ process_file (const char *file_name, const char *section_name,
   if (bfd_check_format (abfd, bfd_archive))
     {
       non_fatal (_("%s: cannot get addresses from archive"), file_name);
+      bfd_close (abfd);
       return 1;
     }
 
@@ -459,6 +460,7 @@ process_file (const char *file_name, const char *section_name,
       bfd_nonfatal (bfd_get_filename (abfd));
       if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
        list_matching_formats (matching);
+      bfd_close (abfd);
       return 1;
     }
 
@@ -468,6 +470,7 @@ process_file (const char *file_name, const char *section_name,
       if (section == NULL)
        {
          non_fatal (_("%s: cannot find section %s"), file_name, section_name);
+         bfd_close (abfd);
          return 1;
        }
     }