From: Nick Alcock Date: Mon, 10 Feb 2025 14:40:00 +0000 (+0000) Subject: readelf, objdump: fix ctf dict leak X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bf89fce0cf9f94f451f584877019d2c7ba227154;p=thirdparty%2Fbinutils-gdb.git 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. --- 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);