]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
sunrpc: fix null pointer dereference on zero-length checksum
authorLei Lu <llfamsec@gmail.com>
Mon, 11 Aug 2025 13:58:48 +0000 (21:58 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Oct 2025 10:04:22 +0000 (12:04 +0200)
commit 6df164e29bd4e6505c5a2e0e5f1e1f6957a16a42 upstream.

In xdr_stream_decode_opaque_auth(), zero-length checksum.len causes
checksum.data to be set to NULL. This triggers a NPD when accessing
checksum.data in gss_krb5_verify_mic_v2(). This patch ensures that
the value of checksum.len is not less than XDR_UNIT.

Fixes: 0653028e8f1c ("SUNRPC: Convert gss_verify_header() to use xdr_stream")
Cc: stable@kernel.org
Signed-off-by: Lei Lu <llfamsec@gmail.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/sunrpc/auth_gss/svcauth_gss.c

index e82212f6b5620b7d9981702aca5f1044f8a79804..a8ec30759a184e22f8e588ab71b243db7026e1b7 100644 (file)
@@ -724,7 +724,7 @@ svcauth_gss_verify_header(struct svc_rqst *rqstp, struct rsc *rsci,
                rqstp->rq_auth_stat = rpc_autherr_badverf;
                return SVC_DENIED;
        }
-       if (flavor != RPC_AUTH_GSS) {
+       if (flavor != RPC_AUTH_GSS || checksum.len < XDR_UNIT) {
                rqstp->rq_auth_stat = rpc_autherr_badverf;
                return SVC_DENIED;
        }