[binutils-gdb] sframe: fix PR libsframe/33051

Indu Bhagat ibhagat@sourceware.org
Wed Jun 4 06:12:14 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d984b08bb707a732358341b44b444c1c9860b287

commit d984b08bb707a732358341b44b444c1c9860b287
Author: Indu Bhagat <indu.bhagat@oracle.com>
Date:   Tue Jun 3 23:10:46 2025 -0700

    sframe: fix PR libsframe/33051
    
    Fix PR libsframe/Bug 33051 - ASAN: heap-buffer-overflow
    ../../src/libsframe/sframe.c:1054 in
    sframe_get_funcdesc_with_addr_internal
    
    The previous commit 9d2a24349e2 (libsframe: correct binary search for
    SFrame FDE) adapted the binary search logic in
    sframe_get_funcdesc_with_addr_internal.  Adjusting the upper end of the
    search index was missed.
    
    The search must only be done for FDEs starting at index 0 and up until
    num_fdes - 1.  Prior logic of searching (before commit 9d2a24349e2) was
    a bit different.
    
    libsframe/
            * sframe.c: Use the correct high index.

Diff:
---
 libsframe/sframe.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libsframe/sframe.c b/libsframe/sframe.c
index 950a6846f04..d38a61dbd63 100644
--- a/libsframe/sframe.c
+++ b/libsframe/sframe.c
@@ -1044,7 +1044,7 @@ sframe_get_funcdesc_with_addr_internal (sframe_decoder_ctx *ctx, int32_t addr,
   /* Do the binary search.  */
   fdp = (sframe_func_desc_entry *) ctx->sfd_funcdesc;
   low = 0;
-  high = dhp->sfh_num_fdes;
+  high = dhp->sfh_num_fdes - 1;
   while (low <= high)
     {
       int mid = low + (high - low) / 2;


More information about the Binutils-cvs mailing list