From patchwork Thu Aug 27 22:41:41 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Indu Bhagat X-Patchwork-Id: 142349 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5CEAC4BAE7D7 for ; Thu, 27 Aug 2026 22:43:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5CEAC4BAE7D7 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=MYthp3u4 X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pg1-x529.google.com (mail-pg1-x529.google.com [IPv6:2607:f8b0:4864:20::529]) by sourceware.org (Postfix) with ESMTPS id 1D6724BA79AF for ; Thu, 27 Aug 2026 22:42:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1D6724BA79AF Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1D6724BA79AF Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::529 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1787870542; cv=none; b=MGItOmpXz4R5NU43wlUk77krx55qfmKMIg9npznBPlq8YKBP3OuXAPW28gvNcTPcZ9GbGxlAK3NJNInWUdq5zBuJUEL1+wX792+QVa06Mau3D9yeo24sZQ48xGXXusHClssARZEoemdFxQQfcJ9+qJeIO5GoRwHzKyzgIVAm7/8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1787870542; c=relaxed/simple; bh=0FKDYsEPi0KZHHQ6v18mfSbtV5cNx1qJM4xIpQpgJx8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=lf1njkkr9yAoX/3lZ3gsSwj51ADuL9Xm/emVqS77hkyqXiFF6IPvpRPiDKJ7+g4m24wlFLrxi8EXSApBQ9iatBdk+99W/lxEcs296IPG+D2DPbvobYfNoZZOA4NkIDs9DHCDybM/8On+04ETyxnADpQATIsBsXvCOYNVDJrCQZs= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=MYthp3u4 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1D6724BA79AF Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-cbb8b54fcf8so503175a12.0 for ; Thu, 27 Aug 2026 15:42:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787870541; x=1788475341; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6Gr9IaW5hA+cqTnw/U9RjidmDE/ko+wUwNkGK9OMTiM=; b=MYthp3u4tNddMNbyF35h5aiiQZU5Vcf0saQYK8i4hG4ic1CRYz58kPJRSwKqkJDHVl keAv9P+EV14dF3QfCZKaZG4/egKdC2yDxiAqwF7AudgEEPqkyMMsOnYOUTf71p+oaFpU /t3/RN2WCsKv64lsUSrZfdZtKYdsF0kHvJJmghwK6iT8k918UhboOjMuZVGAJ2Ktml01 RGzGy3AAUaE8J/3UZZGUj2G4rmruy44hlNY9H4pFrHRr9rRhBtgoO1Pm3CeHBeAhqiaI ZdRDMeDYpGp4Mi10PrSkfKgScZMadhxdDFX57XepjA3bMbWo+8IATCMdSEIMlYsAgeCH MiAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787870541; x=1788475341; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=6Gr9IaW5hA+cqTnw/U9RjidmDE/ko+wUwNkGK9OMTiM=; b=nI+5gjdGgA/x2Inlsi8gHi2u57tLMyXe2RV2YddZuZ2f184dkl/EFXzx/1bekB2yWb E0MNii5aJA3+n9GPbAK5Fm0Um4Sbfu6O0RQ15+NANgL5/HuV3j7PnVji3y+0bKBuU8ik yVVEvoqBfH+MXorjJNGoh83ZbU13TC7bMgwEm2V3eBamfogqCabcftX49/eA4MbC6mcz oqzKZRThq/QuHApRJrAjaUY5glTvyerrW0RfphEZFYNY8woZ4TendARdaB4zv+kvNg/s wnXpmHZAGbvI8HN4R5+P/lEiazCKvbsgpLT0PM2fDRZ5Vtc/uZ0i/GIERXIM/mQdlSgN ECDw== X-Gm-Message-State: AFuF++n/y4fnFLq60uoqmV89fDAFK2sfJLF4sFZ84t7FXezw2aEn3v6q iHzx0Xp1ZH+RNvr7dL6KcQ7wNMJ1JIorAiQ/dNopUOZLW+OIYj+C7wwTjbokAg== X-Gm-Gg: AR+sD11Ecs1eM84NSyTVg2oWamUoLMK3ez2JQqoAYQRYvI9AWY7n6H2H5UCNKYJjEW/ ooXzs5Ngri7PvJhtwwfuZfCTbzTmilviSf/aYFq7Qk/Dq7czBC1rB68Aq0usfJCgtO73GiE4ASe gX2bkNWQ1THMaW1LQ+YDq8kIfdNGEl8j8YTXiCY52FM54WAso+7G8xgN83oPykBx2v1aczKU/5y w/ViWK/EoWtIMpCggCRjgyEDiJ7NM/CLuaWLOaDfRdfXmE6hxd16D15PdAzmx7yQpZ+wApiQQ4D pM4a4cyHB9u6T/FNY0oOv4+EMOLGoihZ7cSPeQ7bCfiCMWJodslzZBlNCMXcOuvM/IRxlrryHFh /pPI5m3RJbSh5vWsrdJIWTZlDpZ5nK5zukHIJ0cw0ISZDDIyGC0UBw+KICzOn/3ooRU0/NEvlOD puj8bC+Tu7LZ1l7bIY/DMGadJL6r5ryOaevfjAARTnHicjJWPBh2tk X-Received: by 2002:a17:90b:544b:b0:392:b509:b1a5 with SMTP id 98e67ed59e1d1-396d0fdb939mr4077387a91.14.1787870541014; Thu, 27 Aug 2026 15:42:21 -0700 (PDT) Received: from fedora.. ([2604:3d08:9582:1100::d625]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-396b0d80008sm4506694a91.6.2026.08.27.15.42.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Aug 2026 15:42:20 -0700 (PDT) From: Indu Bhagat To: binutils@sourceware.org Cc: jremus@linux.ibm.com, Indu Bhagat Subject: [PATCH 05/10] libsframe: handle invalid fre_type gracefully Date: Thu, 27 Aug 2026 15:41:41 -0700 Message-ID: <20260827224146.3391610-6-ibhagatgnu@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260827224146.3391610-1-ibhagatgnu@gmail.com> References: <20260827224146.3391610-1-ibhagatgnu@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org sframe_fre_start_addr_size() previously hit an sframe_assert, when encountering an invalid or unsupported fre_type. This may happen in untrusted input binaries / crafted SFrame data. Replace sframe_assert in sframe_fre_start_addr_size() with returning 0. Update flip_fre() and sframe_fre_entry_size() to check for addr_size == 0 and fail gracefully by returning error codes instead of aborting. Some callers of sframe_fre_start_addr_size () now see additional check for invalid fre_type and exit early. This addresses some issues raised in PR libsframe/34273. Reviewed-by: Jens Remus --- libsframe/sframe.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libsframe/sframe.c b/libsframe/sframe.c index 4742e4550c2..51b6bf57c05 100644 --- a/libsframe/sframe.c +++ b/libsframe/sframe.c @@ -470,8 +470,7 @@ sframe_fre_start_addr_size (uint32_t fre_type) addr_size = 4; break; default: - /* No other value is expected. */ - sframe_assert (0); + addr_size = 0; break; } return addr_size; @@ -534,6 +533,8 @@ sframe_fre_entry_size (sframe_frame_row_entry *frep, uint32_t fre_type) uint8_t fre_info = frep->fre_info; size_t addr_size = sframe_fre_start_addr_size (fre_type); + if (addr_size == 0) + return 0; return (addr_size + sizeof (frep->fre_info) + sframe_fre_datawords_bytes_size (fre_info)); @@ -549,6 +550,8 @@ sframe_buf_fre_entry_size (const char *fre_buf, uint32_t fre_type) return 0; size_t addr_size = sframe_fre_start_addr_size (fre_type); + if (addr_size == 0) + return 0; uint8_t fre_info = *(uint8_t *)(fre_buf + addr_size); return (addr_size + sizeof (fre_info) @@ -707,7 +710,7 @@ flip_fre (char *fp, size_t fp_size, uint32_t fre_type, size_t *fre_size) return sframe_set_errno (&err, SFRAME_ERR_INVAL); addr_size = sframe_fre_start_addr_size (fre_type); - if (addr_size > fp_size) + if (addr_size == 0 || addr_size > fp_size) return SFRAME_ERR; flip_fre_start_address (fp, fre_type);