]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
readelf, objdump: fix ctf dict leak
authorNick Alcock <nick.alcock@oracle.com>
Mon, 10 Feb 2025 14:40:00 +0000 (14:40 +0000)
committerNick Alcock <nick.alcock@oracle.com>
Fri, 28 Feb 2025 14:16:29 +0000 (14:16 +0000)
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
binutils/readelf.c

index 5ab29a719bcad75f954db7aa6fe8bff67db350bd..bbc34ed21dd554ae9325ab0cf2a0dae4ce91d9e3 100644 (file)
@@ -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);
index 70d0c533f91838351c1963d4464bca71738cb245..d71ec194bdac3ddf6142b093fbd9f796e67fde73 100644 (file)
@@ -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);