[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;
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.