aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2025-02-10 14:40:00 +0000
committerNick Alcock <nick.alcock@oracle.com>2025-02-28 14:16:29 +0000
commitbf89fce0cf9f94f451f584877019d2c7ba227154 (patch)
treed21a772fda37b7109d2941e19e20b6ce03eb29d5
parenta3177d19fb23df50419bd44d945090bb4fcc8891 (diff)
downloadbinutils-bf89fce0cf9f94f451f584877019d2c7ba227154.zip
binutils-bf89fce0cf9f94f451f584877019d2c7ba227154.tar.gz
binutils-bf89fce0cf9f94f451f584877019d2c7ba227154.tar.bz2
readelf, objdump: fix ctf dict leak
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.
-rw-r--r--binutils/objdump.c5
-rw-r--r--binutils/readelf.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 5ab29a7..bbc34ed 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 70d0c53..d71ec19 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);