From: Azeem Shaikh Date: Fri, 12 May 2023 15:57:49 +0000 (+0000) Subject: NFS: Prefer strscpy over strlcpy calls X-Git-Tag: v6.6.7~2390^2~45 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8ca25e00cf817b635f4e80d59b6d07686d74eff0;p=platform%2Fkernel%2Flinux-starfive.git NFS: Prefer strscpy over strlcpy calls strlcpy() reads the entire source buffer first. This read may exceed the destination size limit. This is both inefficient and can lead to linear read overflows if a source string is not NUL-terminated [1]. Check for strscpy()'s return value of -E2BIG on truncate for safe replacement with strlcpy(). This is part of a tree-wide cleanup to remove the strlcpy() function entirely from the kernel [2]. [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strlcpy [2] https://github.com/KSPP/linux/issues/89 Signed-off-by: Azeem Shaikh Reviewed-by: Kees Cook Signed-off-by: Kees Cook Link: https://lore.kernel.org/r/20230512155749.1356958-1-azeemshaikh38@gmail.com --- diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c index 620329b..7600100 100644 --- a/fs/nfs/nfsroot.c +++ b/fs/nfs/nfsroot.c @@ -164,7 +164,7 @@ __setup("nfsroot=", nfs_root_setup); static int __init root_nfs_copy(char *dest, const char *src, const size_t destlen) { - if (strlcpy(dest, src, destlen) > destlen) + if (strscpy(dest, src, destlen) == -E2BIG) return -1; return 0; }