[binutils-gdb/binutils-2_46-branch] Correct calls to sframe_decoder_free
Alan Modra via Binutils-cvs <[email protected]>
| Newsgroups | gmane.comp.gnu.binutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=09a510d7e3f68455a3ecc71ee7f7e692315938b3 commit 09a510d7e3f68455a3ecc71ee7f7e692315938b3 Author: Alan Modra <[email protected]> Date: Wed Feb 11 15:30:40 2026 +1030 Correct calls to sframe_decoder_free Correct calls to sframe_decoder_free so that sfd_info->stf_ctx is cleared. If sfd_info->stf_ctx isn't cleared we can get double frees. * elf-sframe.c (sframe_decode): Do not pass local var sfd_ctx address to sframe_decoder_free, pass the actual context address. (_bfd_elf_merge_section_sframe): Likewise. (bug-fix cherry-pick from 3949fb481a6739dc1f4dc5fad09d7646c90af3d2 without the free on bfd_close.) Diff: --- bfd/elf-sframe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bfd/elf-sframe.c b/bfd/elf-sframe.c index e84b757ca37..c28f1236a2f 100644 --- a/bfd/elf-sframe.c +++ b/bfd/elf-sframe.c @@ -282,7 +282,7 @@ _bfd_elf_parse_sframe (bfd *abfd, if (!sframe_decoder_init_func_bfdinfo (abfd, sec, sfd_info, cookie)) { - sframe_decoder_free (&sfd_ctx); + sframe_decoder_free (&sfd_info->sfd_ctx); goto fail_no_free; } @@ -601,7 +601,7 @@ _bfd_elf_merge_section_sframe (bfd *abfd, sfd_info->sfd_state = SFRAME_SEC_MERGED; /* Free the SFrame decoder context. */ - sframe_decoder_free (&sfd_ctx); + sframe_decoder_free (&sfd_info->sfd_ctx); return true; }