PR26069, strip/objcopy memory leaks
authorAlan Modra <amodra@gmail.com>
Wed, 3 Jun 2020 06:03:01 +0000 (15:33 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 3 Jun 2020 08:29:44 +0000 (17:59 +0930)
PR 26029
* elf.c (_bfd_elf_close_and_cleanup): Free elf_shstrtab for
core files as well as objects.

bfd/ChangeLog
bfd/elf.c

index a3e777e990dc8f3c5937b181c4ce874a8543561f..21302711f46c457826f3be36a3cdfe37dcd6a14c 100644 (file)
@@ -1,3 +1,9 @@
+2020-06-03  Alan Modra  <amodra@gmail.com>
+
+       PR 26029
+       * elf.c (_bfd_elf_close_and_cleanup): Free elf_shstrtab for
+       core files as well as objects.
+
 2020-06-01  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/26067
index e335ff7efbfd8d19f18dc0c6a44332907ad5ec97..9ca42e10d8e5b28090d6ce73cc65fbd456210123 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -9438,7 +9438,9 @@ bfd_boolean
 _bfd_elf_close_and_cleanup (bfd *abfd)
 {
   struct elf_obj_tdata *tdata = elf_tdata (abfd);
-  if (bfd_get_format (abfd) == bfd_object && tdata != NULL)
+  if (tdata != NULL
+      && (bfd_get_format (abfd) == bfd_object
+         || bfd_get_format (abfd) == bfd_core))
     {
       if (elf_tdata (abfd)->o != NULL && elf_shstrtab (abfd) != NULL)
        _bfd_elf_strtab_free (elf_shstrtab (abfd));