Re: [PATCH] net: ipconfig: replace strncpy with strscpy_pad

From: Nelson, Shannon
Date: Thu Apr 10 2025 - 16:42:01 EST


On 4/10/2025 12:59 PM, Pranav Tyagi wrote:

On Wed, Apr 9, 2025 at 3:14 AM Nelson, Shannon <shannon.nelson@xxxxxxx> wrote:

On 4/8/2025 11:57 AM, Pranav Tyagi wrote:

Replace the deprecated strncpy() function with strscpy_pad() as the
destination buffer is NUL-terminated and requires
trailing NUL-padding

Signed-off-by: Pranav Tyagi <pranav.tyagi03@xxxxxxxxx>

There should be a Fixes tag here, and usually we put the 'net' tree
indicator inside the tag, like this: [PATCH net]


---
net/ipv4/ipconfig.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index c56b6fe6f0d7..7c238d19328f 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -1690,7 +1690,7 @@ static int __init ic_proto_name(char *name)
*v = 0;
if (kstrtou8(client_id, 0, dhcp_client_identifier))
pr_debug("DHCP: Invalid client identifier type\n");
- strncpy(dhcp_client_identifier + 1, v + 1, 251);
+ strscpy_pad(dhcp_client_identifier + 1, v + 1, 251);

The strncpy() action, as well as the memcpy() into
dhcp_client_identifier elsewhere, are not padding to the end, so I think
this only needs to be null-terminated, not fully padded. If full
padding is needed, please let us know why.

sln

*v = ',';
}
return 1;
--
2.49.0




My initial assumption was on the fact that dhcp_client_identifier
is directly used in DHCP packet construction
and may be parsed byte-wise. But on going through the code again
I see that it does not require to be fully padded.
Would strscpy() suffice? as it ensures null-termination and
does not fully pad the buffer.

Yes, strscpy() should work.
sln



Regards
Pranav Tyagi