PR24933, Memory leak in elf_x86_64_get_synthetic_symtab
authorAlan Modra <amodra@gmail.com>
Fri, 23 Aug 2019 09:46:25 +0000 (19:16 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 23 Aug 2019 09:59:51 +0000 (19:29 +0930)
PR 24933
* elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Don't exit
on error without freeing plts[] contents.

bfd/ChangeLog
bfd/elfxx-x86.c

index 0eb514d314c979c5d8c478362fea1e46a6c64f40..b39acb19b21856d92017619b8a24865913b9c1cc 100644 (file)
@@ -1,3 +1,9 @@
+2019-08-23  Alan Modra  <amodra@gmail.com>
+
+       PR 24933
+       * elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Don't exit
+       on error without freeing plts[] contents.
+
 2019-08-22  Dennis Zhang  <dennis.zhang@arm.com>
 
        * cpu-arm.c: New entries for Cortex-M35P, Cortex-A77, Cortex-A76AE.
index 78ed41ad381f771ce0e6d17decf224d6bb6894df..634f911ca5395cf0f1ef738fda2511b102e44b93 100644 (file)
@@ -2171,17 +2171,18 @@ _bfd_x86_elf_get_synthetic_symtab (bfd *abfd,
                              bfd_vma);
   bfd_boolean (*valid_plt_reloc_p) (unsigned int);
 
+  dynrelbuf = NULL;
   if (count == 0)
-    return -1;
+    goto bad_return;
 
   dynrelbuf = (arelent **) bfd_malloc (relsize);
   if (dynrelbuf == NULL)
-    return -1;
+    goto bad_return;
 
   dynrelcount = bfd_canonicalize_dynamic_reloc (abfd, dynrelbuf,
                                                dynsyms);
   if (dynrelcount <= 0)
-    return -1;
+    goto bad_return;
 
   /* Sort the relocs by address.  */
   qsort (dynrelbuf, dynrelcount, sizeof (arelent *),