From nobody Fri Oct 31 01:06:06 2025 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 4cyN8Z6Vzgz6DdpW; Fri, 31 Oct 2025 01:06:06 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cyN8Z5vMyz3nLy; Fri, 31 Oct 2025 01:06:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761872766; 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=7dMvnXPVjLzy1XBH05c4cCYjvstWVoWUMSCbETdqIo0=; b=b3GW2Rq85KcIO/JFNpS1qDuadRf5gV9lcziFLlA2JoRwMOBCpNDjkpgM13/wXOxHyxeNc9 2uhVI1gNeawCLBt7HssxeTQBsuHzBEAv+vQZaJi0gGLA3Mg6POmTlc4KZc1daFFRhiBBGe zQCzxsk/q9R2oknsdx5cTepZo0NzWEZUgcUBfsM3Nxw51TjGxkksYhs//x7WmnV7IY/HeF 1gNtFOeKn9aX/XY/NGYFKjnmI/WkClEUUaBygL8qPZgejn4mD3/gg/c9GQvJLwQj2U4K4T 9GIKgd1NAKOLmGcHGCGSQAnHrTCFXF2R0RvTJY6GjG6yNn0I/uJD68+xsrU10A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761872766; 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=7dMvnXPVjLzy1XBH05c4cCYjvstWVoWUMSCbETdqIo0=; b=aBn8FlKTk2N3A0f+6Tgkkx3+akIAegHAaUdt+apKaNE9gt9ROQ5uYsNkq5EQFpCLB3HnT3 injZn0471kZQoI/Ga/oHb02DHpRSnMG353wItZ5evt4yX5Mtyf8Q3TAr12q8zYYEQgUZS6 QD8IOu5pcNsnAIq8c2cdmTyaDyzeNr7/4uJZ2dyPRAjjP5SweHC+yGVgPKryRvbdmTZ5Ve UH9vLQpjrc5TWBXaaNvneeqC4kT8sZRstA9FjjGfHSBEhrys8vBQNdJhqvpHPQpmuY9v7N Sjjla67+gOPitfHTzjsP+p+YNiglxCPCUUaBX2vVf211WzVQd4ue/p0i0JCpUQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761872766; a=rsa-sha256; cv=none; b=TmdLX28s41do7pQhY9e1W6Ne47R/syzdhUv/wxscdXGdhhJUvtJad40Ph1OHxRISw3gw25 hHtyBenuAHSnV5vA4RzA8/ByB5ShQexZ7LyKO/ehmf2/Q2rbI1y/p3PSDuaZgXeqHlT62x 9fR6icdyBX/U+FYNfAQ976bBYnmjkDPzAXtyrCnmpntB61cfY3Qlz2WqUdhj2M0Joa6Sey bEOBPMHxeYoPeEXYYFuNwMxLBFslyxt/UcxjdLLHMxH0wgJoNzENaIRTXXA2IFXx/tiW1j VuXU0eTHDmwHfenPCTazbbkPW72QmT3TbAZs4ir/GkkCpSUNFojhg9yq+CyPiQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cyN8Z56gSzn5p; Fri, 31 Oct 2025 01:06:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59V166Hi022331; Fri, 31 Oct 2025 01:06:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59V166M0022328; Fri, 31 Oct 2025 01:06:06 GMT (envelope-from git) Date: Fri, 31 Oct 2025 01:06:06 GMT Message-Id: <202510310106.59V166M0022328@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: c02fa3f085c6 - stable/15 - nfs_clrpcops.c: NFSM_DISSECT() reply for each dir separately 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 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: c02fa3f085c6da65dea981e3ac8adcc76470946f Auto-Submitted: auto-generated The branch stable/15 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=c02fa3f085c6da65dea981e3ac8adcc76470946f commit c02fa3f085c6da65dea981e3ac8adcc76470946f Author: Rick Macklem AuthorDate: 2025-10-28 21:31:30 +0000 Commit: Rick Macklem CommitDate: 2025-10-31 01:03:09 +0000 nfs_clrpcops.c: NFSM_DISSECT() reply for each dir separately Without this patch, the entire reply for all directories in the NFSv4 mount path are parsed at once. This could cause problems for mount paths with many directories in the path. This patch fixes the problem by parsing each directory reply in a loop. Spotted while fixing other cases that could do large NFSM_DISSECT() sizes. (cherry picked from commit 9d13c87afdb35c0014aa6f43c5652e946c18b756) --- sys/fs/nfsclient/nfs_clrpcops.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index ec0d3713dc9f..544b1962de26 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -5281,7 +5281,7 @@ nfsrpc_getdirpath(struct nfsmount *nmp, u_char *dirpath, struct ucred *cred, struct nfsrv_descript nfsd; struct nfsrv_descript *nd = &nfsd; u_char *cp, *cp2, *fhp; - int error, cnt, len, setnil; + int error, cnt, i, len, setnil; u_int32_t *opcntp; nfscl_reqstart(nd, NFSPROC_PUTROOTFH, nmp, NULL, 0, &opcntp, NULL, 0, @@ -5322,8 +5322,12 @@ nfsrpc_getdirpath(struct nfsmount *nmp, u_char *dirpath, struct ucred *cred, if (error) return (error); if (nd->nd_repstat == 0) { - NFSM_DISSECT(tl, u_int32_t *, (3 + 2 * cnt) * NFSX_UNSIGNED); - tl += (2 + 2 * cnt); + NFSM_DISSECT(tl, uint32_t *, 3 * NFSX_UNSIGNED); + tl += 2; + for (i = 0; i < cnt; i++) { + NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); + tl++; + } if ((len = fxdr_unsigned(int, *tl)) <= 0 || len > NFSX_FHMAX) { nd->nd_repstat = NFSERR_BADXDR;