Re: Fix an aout memory leak
authorAlan Modra <amodra@gmail.com>
Tue, 28 Mar 2023 22:43:17 +0000 (09:13 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 29 Mar 2023 02:26:46 +0000 (12:56 +1030)
We have way too much duplicated code in bfd.  Apply dd3a3d0af9f6 and
920581c57e08 to pdp11.c.

* pdp11.c (bfd_free_cached_info): Free line_buf.  Return true
if tdata.aout_data is NULL.

bfd/pdp11.c

index 862cf49fda3f1651d84a4cc899f49c5c0e2cba13..9edbba92c825dc51e89fd1371c8c5397b48b3a87 100644 (file)
@@ -2539,12 +2539,13 @@ NAME (aout, bfd_free_cached_info) (bfd *abfd)
 {
   asection *o;
 
-  if (bfd_get_format (abfd) != bfd_object)
+  if (bfd_get_format (abfd) != bfd_object
+      || abfd->tdata.aout_data == NULL)
     return true;
 
 #define BFCI_FREE(x) do { free (x); x = NULL; } while (0)
+  BFCI_FREE (adata (abfd).line_buf);
   BFCI_FREE (obj_aout_symbols (abfd));
-
 #ifdef USE_MMAP
   obj_aout_external_syms (abfd) = 0;
   bfd_free_window (&obj_aout_sym_window (abfd));