git: 77a00e86d64c - releng/15.0 - sys/rpc: UNIX auth: Do not log on bogus AUTH_SYS messages

From: Colin Percival <cperciva_at_FreeBSD.org>
Date: Thu, 16 Oct 2025 18:50:27 UTC
The branch releng/15.0 has been updated by cperciva:

URL: https://cgit.FreeBSD.org/src/commit/?id=77a00e86d64ce6af066099345cd2f00f9bc2ca82

commit 77a00e86d64ce6af066099345cd2f00f9bc2ca82
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2025-10-14 12:54:55 +0000
Commit:     Colin Percival <cperciva@FreeBSD.org>
CommitDate: 2025-10-16 18:48:24 +0000

    sys/rpc: UNIX auth: Do not log on bogus AUTH_SYS messages
    
    Remove the printf() stances added in commit d4cc791f3b2e ("sys/rpc: UNIX
    auth: Fix OOB reads on too short message").
    
    Even if it can be helpful to know why an authentication message is
    rejected, printing explanatory messages on each request attempt is
    a remote log filler that could be triggered by accident, and the generic
    RPC code generally does not do that.  These printf() calls should be
    restored only after some limiting or configuration mechanism is devised.
    
    Approved by:    re (cperciva)
    MFC with:       d4cc791f3b2e ("sys/rpc: UNIX auth: Fix OOB reads on too short message")
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit 2110ae0ef9d6ca8cf52b29fcaf926c4343f56826)
    (cherry picked from commit fb8a978ebfeb5522123e3afcbcd5dc36591dce31)
---
 sys/rpc/svc_auth_unix.c | 20 +++-----------------
 1 file changed, 3 insertions(+), 17 deletions(-)

diff --git a/sys/rpc/svc_auth_unix.c b/sys/rpc/svc_auth_unix.c
index 9e4b0b8483b5..aa0fc585865f 100644
--- a/sys/rpc/svc_auth_unix.c
+++ b/sys/rpc/svc_auth_unix.c
@@ -41,7 +41,6 @@
  */
 
 #include <sys/param.h>
-#include <sys/systm.h>
 #include <sys/ucred.h>
 
 #include <rpc/rpc.h>
@@ -70,11 +69,8 @@ _svcauth_unix(struct svc_req *rqst, struct rpc_msg *msg)
 		const uint32_t min_len = 5 * BYTES_PER_XDR_UNIT;
 		uint32_t str_len, supp_ngroups;
 
-		if (auth_len < min_len) {
-			(void)printf("AUTH_SYS: Too short credentials (%u)\n",
-			    auth_len);
+		if (auth_len < min_len)
 			goto badcred;
-		}
 		time = IXDR_GET_UINT32(buf);
 		str_len = IXDR_GET_UINT32(buf);
 		if (str_len > AUTH_SYS_MAX_HOSTNAME)
@@ -85,12 +81,8 @@ _svcauth_unix(struct svc_req *rqst, struct rpc_msg *msg)
 		 * 'str_len' (and that it won't cause an overflow in additions
 		 * below) to protect access to the credentials part.
 		 */
-		if (auth_len < min_len + str_len) {
-			(void)printf("AUTH_SYS: Inconsistent credentials and "
-			    "host name lengths (%u, %u)\n",
-			    auth_len, str_len);
+		if (auth_len < min_len + str_len)
 			goto badcred;
-		}
 		buf += str_len / sizeof (int32_t);
 		xcr->cr_uid = IXDR_GET_UINT32(buf);
 		xcr->cr_gid = IXDR_GET_UINT32(buf);
@@ -108,14 +100,8 @@ _svcauth_unix(struct svc_req *rqst, struct rpc_msg *msg)
 		 * read in total.
 		 */
 		if (auth_len < min_len + str_len +
-		    supp_ngroups * BYTES_PER_XDR_UNIT) {
-			(void)printf("AUTH_SYS: Inconsistent lengths "
-			    "(credentials %u, machine name %u, "
-			    "supplementary groups %u)\n",
-			    auth_len, str_len,
-			    supp_ngroups * BYTES_PER_XDR_UNIT);
+		    supp_ngroups * BYTES_PER_XDR_UNIT)
 			goto badcred;
-		}
 
 		/*
 		 * Note that 'xcr' is a 'struct xucred', which still has the