[PATCH 2/4] readelf, objdump: fix ctf dict leak

Nick Alcock nick.alcock@oracle.com
Tue Feb 25 21:10:13 GMT 2025


ctf_archive_next returns an opened dict, which must be closed by the caller.

Thanks to Alan Modra for spotting this.

binutils/
	* objdump.c (dump_ctf): Close dict.
	* readelf.c (dump_section_as_ctf): Likewise.
---
 binutils/objdump.c | 5 ++++-
 binutils/readelf.c | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/binutils/objdump.c b/binutils/objdump.c
index 5ab29a719bc..bbc34ed21dd 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -4940,7 +4940,10 @@ dump_ctf (bfd *abfd, const char *sect_name, const char *parent_name,
   printf (_("Contents of CTF section %s:\n"), sanitize_string (sect_name));
 
   while ((fp = ctf_archive_next (ctfa, &i, &name, 0, &err)) != NULL)
-    dump_ctf_archive_member (fp, name, parent, member++);
+    {
+      dump_ctf_archive_member (fp, name, parent, member++);
+      ctf_dict_close (fp);
+    }
   if (err != ECTF_NEXT_END)
     {
       dump_ctf_errs (NULL);
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 70d0c533f91..d71ec194bda 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -17080,7 +17080,10 @@ dump_section_as_ctf (Elf_Internal_Shdr * section, Filedata * filedata)
 	    printable_section_name (filedata, section));
 
  while ((fp = ctf_archive_next (ctfa, &i, &name, 0, &err)) != NULL)
-    dump_ctf_archive_member (fp, name, parent, member++);
+   {
+     dump_ctf_archive_member (fp, name, parent, member++);
+     ctf_dict_close (fp);
+   }
  if (err != ECTF_NEXT_END)
    {
      dump_ctf_errs (NULL);
-- 
2.48.1.283.g18c60a128c



More information about the Binutils mailing list