[PATCH 09/10] libctf: free ctf_dynsyms properly

Nick Alcock nick.alcock@oracle.com
Sat Feb 27 13:29:53 GMT 2021


In the "no symbols" case (commonplace for executables), we were freeing
the ctf_dynsyms using free(), instead of ctf_dynhash_destroy(), leaking
a little memory.

(This is harmless in the common case of ld usage, but libctf might be
used by persistent processes too.)

libctf/ChangeLog
2021-02-25  Nick Alcock  <nick.alcock@oracle.com>

	* ctf-link.c (ctf_link_shuffle_syms): Free ctf_dynsyms properly.
---
 libctf/ChangeLog  | 4 ++++
 libctf/ctf-link.c | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index 01286bcab54..f30f79ec6ee 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,3 +1,7 @@
+2021-02-25  Nick Alcock  <nick.alcock@oracle.com>
+
+	* ctf-link.c (ctf_link_shuffle_syms): Free ctf_dynsyms properly.
+
 2021-02-25  Nick Alcock  <nick.alcock@oracle.com>
 
 	* ctf-dump.c (ctf_dump_format_type): Fix signed/unsigned confusion.
diff --git a/libctf/ctf-link.c b/libctf/ctf-link.c
index 05733a0cb7d..882d4297e4f 100644
--- a/libctf/ctf-link.c
+++ b/libctf/ctf-link.c
@@ -1580,7 +1580,7 @@ ctf_link_shuffle_syms (ctf_dict_t *fp)
   if (!ctf_dynhash_elements (fp->ctf_dynsyms))
     {
       ctf_dprintf ("No symbols: not a final link.\n");
-      free (fp->ctf_dynsyms);
+      ctf_dynhash_destroy (fp->ctf_dynsyms);
       fp->ctf_dynsyms = NULL;
       return 0;
     }
-- 
2.30.0.252.gc27e85e57d



More information about the Binutils mailing list