]> www.infradead.org Git - users/hch/misc.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)
committerChuck Lever <chuck.lever@oracle.com>
Sun, 21 Sep 2025 23:24:50 +0000 (19:24 -0400)
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>
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;
        }