From nobody Tue Sep 29 01:18:59 2026 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 91556417D64 for ; Fri, 14 Aug 2026 07:28:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.72 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786692538; cv=none; b=GaB6wuu3hjo8TdUxbyiLV0IRri+uSwftaahJ2fYq5VTAprnqNAw4sFvOFnlR4b/Qdi6yY8p6g5LSsspIFeKwoa9v+5tfO0QNmIqkZmFfc17K0uv8HXEf2XD4w1KuCY2o/q78wCeBeQCnpLKR5TYbJ7ooAq9kwRPei11ky5NpJKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786692538; c=relaxed/simple; bh=F+1IYpyjzpe9iHTEepszy6yA5dLdKR2QVmSm5rQcmNk=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=JSIsmZMOl1bVKQZbuRcLZWOqfASED6WyNH5BtqWIX9a7auRmPGVhnQ2qzvn4clI6AWyXwnGSxDB8BHvoFFYYC0HXJi9+Q49ltVIloKciaoO3uF7NimpnwfNiwq11/vYJTxwYSiXxjqFaHtTG7IZNlEHzldNKVsJpM25HRN3pSkM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--mariianikitash.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=JBwPI6qB; arc=none smtp.client-ip=209.85.216.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--mariianikitash.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="JBwPI6qB" Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-3811279d51aso1215927a91.1 for ; Fri, 14 Aug 2026 00:28:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1786692529; x=1787297329; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:mime-version:date:from :to:cc:subject:date:message-id:reply-to:content-type; bh=M14hGkxKzgTjrw+Sf+MeT5uqCNc52Rdu5nt3iXHsVtU=; b=JBwPI6qB9//IEeWon2XqnkIg+wmd32sn+e6dktQIrJX/pP4p0ltEZz4kvZgEEDTx5q jKBtj+g0Y76q6NyaC2mArIFPB9onbCddk/2LoqTl/XIXA/8NeHKG6FJ8KDbj3h4uHQc8 Rstt5UJNCwu7MRN42vnp8RK5ecVallPzeoZ6GzcByoymAQ8TQ/NpAFwHi6LXNtYMtfot YY/kNp0CgphdUeRi5IQegznxCH81jwVZ+sO+0AslGQa+SshJ3FhYXmX6jeM3VJ0U7In6 0LXzrmhDBN53fJA4RzAPvLlZ3Q9SACsr/3u6U5kQ1i8JFEbWq9r9nI+1nVNc8M3m/n2Q H2Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786692529; x=1787297329; h=content-type:cc:to:from:subject:message-id:mime-version:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=M14hGkxKzgTjrw+Sf+MeT5uqCNc52Rdu5nt3iXHsVtU=; b=pe8n+vLx+Etr90yx3d3F6QNawdSg6oLAC9JSmzns6wkXpXg650cbwxHQ4EZ/fSYX8h QZMTiA2w+Yh1EdMRdgd9KlzL8HIFuZD3WSCSFYemV96IDh3yfEbFBaQhn1M9Uz6XMOOH lm7q+hjtyR/1Vdn9NkSJ+6aeg+Fh/xPyV8S8WC3wgo2wvtHoYJB4bb3Gs0ZV1Q0hf4RA A+8+2hyKAFrhI85UXyUrEGF4i8FlPsaz9OkVLmgzLgFUyagHL2k6PTlAu72sGe9C4T+K P+3A2OSLlz64HPToLHaXrQSUcSIaN2QJHeYTJOoaVCizBUQnXumlR0Fhw+LtNzafEAyl JkKg== X-Forwarded-Encrypted: i=1; AHgh+RpEZP7l+lu318YxNETqOUZdtVaz3sSzNzDU/yv1i1VlLfaiSdznsaSV3jE7XI0T5lEkPkT6W2kbRNnqew0=@vger.kernel.org X-Gm-Message-State: AOJu0YwyZvzDxkVnPz236VKfoRfnaXQJKCCp57GMLBCEFyNyoIrMOgD2 h8kCWslt1AXO/LvaPH9K0wn9UNOtHn1haSJcbmuUAPx1BgGKSXM36C41TXtHmalhSz1gFAEVpcP dPhyqZHULuEK97fH4mQLgrJ/zaF7p4oH0K47TLw== X-Received: from dyco25.prod.google.com ([2002:a05:7300:51d9:b0:30e:953c:b434]) (user=mariianikitash job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:48ce:b0:390:b41a:b92b with SMTP id 98e67ed59e1d1-3933b6d05c3mr4722707a91.4.1786692529154; Fri, 14 Aug 2026 00:28:49 -0700 (PDT) Date: Fri, 14 Aug 2026 00:28:45 -0700 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.55.0.691.gc56d675ccc-goog Message-ID: <27956255dde39f58d73a7b51cb53cbe3d7804f54.1786411026.git.mariianikitash@google.com> Subject: [PATCH] NFS: nfsroot: replace strlcat() with snprintf() From: Mariia Nikitash To: trondmy@kernel.org, anna@kernel.org Cc: keescook@google.com, justinstitt@google.com, linux-hardening@vger.kernel.org, linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, nikitash.mariiaw@gmail.com, Mariia Nikitash Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In preparation for removing the deprecated strlcat() API[1], replace its uses in root_nfs_cat() with snprintf(). Build the separator and source string in a single call using the remaining space in the destination buffer. snprintf() returns the length it would have written excluding the terminating NUL, so comparing the return value against the remaining buffer space preserves the existing truncation check. Link: https://github.com/KSPP/linux/issues/370 [1] Signed-off-by: Mariia Nikitash Acked-by: Bill Wendling Reviewed-by: Justin Stitt Reviewed-by: Kees Cook --- fs/nfs/nfsroot.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c index 432612d22437..e951fe731679 100644 --- a/fs/nfs/nfsroot.c +++ b/fs/nfs/nfsroot.c @@ -173,12 +173,12 @@ static int __init root_nfs_cat(char *dest, const char= *src, const size_t destlen) { size_t len =3D strlen(dest); + size_t remaining =3D destlen - len; + const char *sep =3D ""; =20 if (len && dest[len - 1] !=3D ',') - if (strlcat(dest, ",", destlen) >=3D destlen) - return -1; - - if (strlcat(dest, src, destlen) >=3D destlen) + sep =3D ","; + if (snprintf(dest + len, remaining, "%s%s", sep, src) >=3D remaining) return -1; return 0; } --=20 2.55.0.679.g6767b8d81c-goog