From d984b08bb707a732358341b44b444c1c9860b287 Mon Sep 17 00:00:00 2001 From: Indu Bhagat Date: Tue, 3 Jun 2025 23:10:46 -0700 Subject: [PATCH] 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. --- 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; -- 2.47.2