From nobody Fri Oct 09 00:20:30 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4j16vg1Ctdz6Z1xD for ; Fri, 09 Oct 2026 00:20:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4j16vg0jzXz4LLw for ; Fri, 09 Oct 2026 00:20:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791505231; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zryBvqHmy/JociW1jgB5c1dwdwAQTR7U/Wj+SrTXgLM=; b=V7ahk2xJXVCBZoPJApDpHqncEpK89ixbp8VA5/OdQ897nnbL0pTOhPFGlRd1MQc7tc+ZnR lY1aZgG/7eRHG3PWQzskLxu+S0KHTn0g18+8X1UfCZu3E1aVb7jvHhDQzvqCg4TScWkC6l NptWRVwWFBvva0xFEfC8awad6xsI+ztgII3tFps965G117Qn0lGGwtkhMW0YQdLdTds1tU wQHD+3qA9ms02h2bmQ2nr5Z+CCri0TEbADdwkHzNAdef3Brk0wMA+CJFyUtbt/Clgwi5k6 UAVk9iWDtcVEWvP3ZfpUfqR1A5x2lfPaETciefCXWcyjMIacoW7UGDhIY3AbMQ== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791505231; b=pRKzidKmfdzDLvCyPX0WAnxMT81qv1twD7XSS5vyIq7NTQ4h6w7XNANYs2nLAQT/amQgxN ja6mrRXJrxttGPUGeEEYOWBni68frBQjUrrFx8unOwyDA01OG8FFIqfZl5+ygIIewSilgV EKpYlfIZyCZtIjwb+xugUDb6qSm5dwq+xkDo3gOaOIulnIFEhg3LHDrP4uIS8jMpn1jevC 4JLnOagAr/l7KcEFV3WgVelRFN4fWBgl1A+8ujrPBRZtZ+dClWP5+k58gS24NGB/KAcnXq UVmSWU6GWQOjDuJ0VRARr1+Y5UgDz9wVWM7jZqoSypYCeiQ7mr5VbA8VFrNjMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791505231; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zryBvqHmy/JociW1jgB5c1dwdwAQTR7U/Wj+SrTXgLM=; b=FfYyRxJhVL/fufcVDT2yP4/3uupXsEBdX8eOHky9onRfXYgimwfo9zu3956RX/b30YHgYD W88i3i69th/cryJg33X+k59Gh06d/NY3z4vKmEwrcqtczUKUPI1el0l7Xi2VPO/KVuQ7P3 n5VjHCREcNagE3hwGbCvNjDuECAHGVJYhlyWPUhuJOOISoGa9BcmS+aQze6OqZ9tI9apVv uBpIyaNluZHosSP9r8fj6QfI1tpsEpz4deQyseA/L7/SApq5utvtxH/Rj6TkzxGwgvmiF1 vRjC3ygEpeCOnuqYDP2Odj4U31dv4eUTqEVJwP/pMl+kr3hhZ64/matSQYfgQQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j16vf6RLGz12t5 for ; Fri, 09 Oct 2026 00:20:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 19061 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 09 Oct 2026 00:20:30 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: c7194e88e423 - stable/14 - cd9660: Don't parse RRIP records whose length overflows the sector boundary List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c7194e88e42387a8ebbf868f94c13c61df81ffc6 Auto-Submitted: auto-generated Date: Fri, 09 Oct 2026 00:20:30 +0000 Message-Id: <6ac8334e.19061.46880a3f@gitrepo.freebsd.org> The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=c7194e88e42387a8ebbf868f94c13c61df81ffc6 commit c7194e88e42387a8ebbf868f94c13c61df81ffc6 Author: John Baldwin AuthorDate: 2026-06-10 13:44:10 +0000 Commit: John Baldwin CommitDate: 2026-10-08 18:23:13 +0000 cd9660: Don't parse RRIP records whose length overflows the sector boundary PR: 272896 Reported by: Robert Morris Reviewed by: des, emaste Differential Revision: https://reviews.freebsd.org/D57135 (cherry picked from commit 0492dbe9212ee0172e8003c487f256015478edd6) --- sys/fs/cd9660/cd9660_rrip.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/sys/fs/cd9660/cd9660_rrip.c b/sys/fs/cd9660/cd9660_rrip.c index dde280815650..20f39656730c 100644 --- a/sys/fs/cd9660/cd9660_rrip.c +++ b/sys/fs/cd9660/cd9660_rrip.c @@ -467,6 +467,7 @@ cd9660_rrip_loop(struct iso_directory_record *isodir, ISO_RRIP_ANALYZE *ana, RRIP_TABLE *ptable; ISO_SUSP_HEADER *phead; ISO_SUSP_HEADER *pend; + ISO_SUSP_HEADER *pnext; struct buf *bp = NULL; char *pwhead; u_short c; @@ -498,6 +499,21 @@ cd9660_rrip_loop(struct iso_directory_record *isodir, ISO_RRIP_ANALYZE *ana, * Note: "pend" should be more than one SUSP header */ while (pend >= phead + 1) { + /* Validate length. */ + if (isonum_711(phead->length) < sizeof(*phead)) + break; + + /* + * Next SUSP + * Hopefully this works with newer versions, too + */ + pnext = (ISO_SUSP_HEADER *)((char *)phead + + isonum_711(phead->length)); + + /* If the record doesn't fit, break out of the loop. */ + if (pnext > pend) + break; + if (isonum_711(phead->version) == 1) { for (ptable = table; ptable->func; ptable++) { if (phead->type[0] == ptable->type[0] && @@ -513,14 +529,8 @@ cd9660_rrip_loop(struct iso_directory_record *isodir, ISO_RRIP_ANALYZE *ana, result &= ~ISO_SUSP_STOP; break; } - /* plausibility check */ - if (isonum_711(phead->length) < sizeof(*phead)) - break; - /* - * move to next SUSP - * Hopefully this works with newer versions, too - */ - phead = (ISO_SUSP_HEADER *)((char *)phead + isonum_711(phead->length)); + + phead = pnext; } if (ana->fields && ana->iso_ce_len) {