From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (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 6DF5143CEED for ; Tue, 18 Aug 2026 08:55:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787043354; cv=none; b=oIp7rXbkfxS29BQX0KMVQu+9rFxEylHA7aICwsCUKCYMHfuxm3cyybEp1iTORs0yCD8zMOzjzQqZL1tqFzU+qQMi9nt/XP5Yg4cmcEDQM39WxWtAY/bMhovGlEdHQK9be+A11DkcvGxdvAtoL0/YmO5bjG4qUnxTFOUQMJ8bDWg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787043354; c=relaxed/simple; bh=C286L6tbBFmVSHmpGBeJxiKWhduKtxRV8w7hZXwOZBc=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Fs4/hy5nT9MYxPEAPs9wzOua02WRlI3EWDuVe6l63gY9oN+nEUx8HBPl44UOb0yBi8lhAaWx2HF4axqepF5cTLiB+34s2etG+aJqHsPFZMG20wjrSsVLLrw0Y/B/sTUN1li27AbNWICY1qS2L+I210+6KMyPFeJS7wU2RfUu3dU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aBKsoiWJ; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aBKsoiWJ" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-480001972b8so1747870f8f.2 for ; Tue, 18 Aug 2026 01:55:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787043351; x=1787648151; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=vCXFaMST6pWHnhL+UrBGfVhFKZlV8sK4DX8oPKUD0UU=; b=aBKsoiWJei+kPrAJO7gPNLwQbC8Ikcy8S3fibWbAU5HEibQR/an3/MbqC7zvZRrtL+ sKif8SDTV8gptA3pLtb5KQ/19a71DWtK4SuV2lAdle5Oqui47K21ErM/fSkxfi7wQc2g qGe9rFqeKCR0eVDAGuVP/iPpjoLaS4CyRYKCRJ1gVaJlzU5tc7h7mMmHA8OU827Cajut sDM7gTnE88zEVNQVTkITcevY2dyxcHxzMGzk+kV49E6IYG97sUbFnY4/jeRVa0mRVxEy YK2v1Qg6LLNazZk5e+JBdyiRokveyeJfjqtzJstJSo5IQtg+Z8FJElEEeDzkNz2LDm1b xT4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787043351; x=1787648151; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=vCXFaMST6pWHnhL+UrBGfVhFKZlV8sK4DX8oPKUD0UU=; b=CXTMnCsMwVd+5WMFtMAXi8bTIZsB9pojjrDDtdr4k3VIxVDuseePG+VxkuirItmlDs C4YoKk2NUisDA7wuD4t1KmLp85wcRI+5oadmtq5zj9xqgHDn7UQbta1fOgfwHwpGxc0w cB7WVFHRNXPW6mBjUUE6gfYm7bif9Juj6yy1K1+Ms4klR64yFirUuypqLX7H5l2JlZmd c2GxVnajQK5KL7zdHIWjYxfaq9EiGBWQIFuRWrcFczH+Ohh5JzqhDi6cEOHLc3ndW3Lz tUX/6N2X+m5zm6Zdl0QJfhEK81AyGGWb6FK4N6di23zr2FiTpZeR9HHoJ/SPGDvv+37W Fx1Q== X-Forwarded-Encrypted: i=1; AHgh+RqAvsh9RVSbGWSr+LombCAKkwvnEPJvRj5dlcZ7whb8lz27XAtmzmiXsQb4jcCkiJkOEQIDiJ4nPVkIZX8=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4pPC5ouQQKruLxuVEw1NJeP67qLK5riKi+Q6+RsDHACcgms4/ 3ybYe1GoTsCZz+PLwMptVT6fF1PwnjkPMv8JKy1e+y4OvwNq6CBq4AQw X-Gm-Gg: AR+sD11Z97FSaNrs63xVS8xHuNN4DjaKRnMde5bvk7hJyBnfumr86TBVA91ZHxRM67e CEci1Ly7BzUBBDGuBw66pTP42eddBELpDTHZAd45Gh7AXPoIap3R5Obq5vRE19pWtIDUeSu9WMC ZjMT7wVF9SB2/96yfFWIatVDcuIcDnjIr8Yz7eDq16pSoh9zw89ZxnubjvYzWt6/tU7s/sbI4WC jeNw6IQZ/6WZIQsI75pdQqX4efWip3G4kKOzxoN8TyyUUWzyhT6VCYdUSEpH/HqzYkr9llbWvy/ 7tG/kFX08/Eqao/d/cviK3UDZkxM9rEZMX6acD9m8+FwFTSgLPfXrxKnB+Z4U+nzu7B48etQTDm BCHeRLC9SOZLebRZiP6Eo+JpJLHsOKsvMShwAiSn9Y9OMxKvgwh8Fn+dX4DCDQJgloy5j/TygdM q5ZRrAUxo1JlEoo4w5WRInX8tIZlEpKSA0JQAh+9DTIin1/Z+0ndLfDdYyzzZIz6vYsyahji9p8 PsYrmJyL/WPOtZTgyjnyDZHtUI= X-Received: by 2002:adf:f84f:0:b0:47f:eb22:4d9a with SMTP id ffacd0b85a97d-482a90e80aamr8822990f8f.22.1787043350536; Tue, 18 Aug 2026 01:55:50 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482a5b81748sm10409553f8f.37.2026.08.18.01.55.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 01:55:50 -0700 (PDT) Date: Tue, 18 Aug 2026 09:55:48 +0100 From: David Laight To: Mariia Nikitash Cc: trondmy@kernel.org, anna@kernel.org, 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 Subject: Re: [PATCH] NFS: nfsroot: replace strlcat() with snprintf() Message-ID: <20260818095548.27e0edb2@pumpkin> In-Reply-To: <27956255dde39f58d73a7b51cb53cbe3d7804f54.1786411026.git.mariianikitash@google.com> References: <27956255dde39f58d73a7b51cb53cbe3d7804f54.1786411026.git.mariianikitash@google.com> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Fri, 14 Aug 2026 00:28:45 -0700 Mariia Nikitash wrote: > 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 > --- > 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 = strlen(dest); > + size_t remaining = destlen - len; > + const char *sep = ""; > > if (len && dest[len - 1] != ',') > - if (strlcat(dest, ",", destlen) >= destlen) > - return -1; > - > - if (strlcat(dest, src, destlen) >= destlen) > + sep = ","; > + if (snprintf(dest + len, remaining, "%s%s", sep, src) >= remaining) > return -1; I think I'd have gone for: size_t len = strlen(dest); if (len && dest[len - 1] != ',' && ++len < destlen) dest[len - 1] = ','; if (strscpy(dest + len, src, destlen - len) < 0) return -1; Although it would be better as an 'add_option()' function. I suspect the it used to be just strcat(). (similarly for root_nfs_copy() which is a pointless wrapper on strscpy()). Much more worth while would be fixing the sprintf() for NFS_ROOT. David > return 0; > }