From: Alan Modra Date: Sun, 8 Jan 2023 02:26:21 +0000 (+1030) Subject: Set dwarf2 stash pointer earlier X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8eacd95dd4406ae4021a6996c0c505648da75440;p=binutils-gdb.git Set dwarf2 stash pointer earlier This fixes a memory leak in the vanishingly rare cases (found by fuzzers of course) when something goes wrong in the save_section_vma, htab_create_alloc or alloc_trie_leaf calls before *pinfo is written. If *pinfo is not written, _bfd_dwarf2_cleanup_debug_info won't be able to free that memory. * dwarf2.c (_bfd_dwarf2_slurp_debug_info): Save stash pointer on setting up stash. --- diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index f689eebbd88..bd431805d2a 100644 --- a/bfd/dwarf2.c +++ b/bfd/dwarf2.c @@ -5408,6 +5408,7 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd, bfd *debug_bfd, stash = (struct dwarf2_debug *) bfd_zalloc (abfd, amt); if (! stash) return false; + *pinfo = stash; } stash->orig_bfd = abfd; stash->debug_sections = debug_sections; @@ -5433,8 +5434,6 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd, bfd *debug_bfd, if (!stash->alt.trie_root) return false; - *pinfo = stash; - if (debug_bfd == NULL) debug_bfd = abfd;