xfs: use memcpy, not strncpy, to format the attr prefix during listxattr
authorDarrick J. Wong <djwong@kernel.org>
Tue, 29 Nov 2022 01:24:42 +0000 (17:24 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 30 Nov 2022 16:55:18 +0000 (08:55 -0800)
When -Wstringop-truncation is enabled, the compiler complains about
truncation of the null byte at the end of the xattr name prefix.  This
is intentional, since we're concatenating the two strings together and
do _not_ want a null byte in the middle of the name.

We've already ensured that the name buffer is long enough to handle
prefix and name, and the prefix_len is supposed to be the length of the
prefix string without the null byte, so use memcpy here instead.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
fs/xfs/xfs_xattr.c

index c325a28b89a8d4bd87f8a178300b92b7badd540a..10aa1fd39d2b0354a2cafa2d38a8d86591893a49 100644 (file)
@@ -210,7 +210,7 @@ __xfs_xattr_put_listent(
                return;
        }
        offset = context->buffer + context->count;
-       strncpy(offset, prefix, prefix_len);
+       memcpy(offset, prefix, prefix_len);
        offset += prefix_len;
        strncpy(offset, (char *)name, namelen);                 /* real name */
        offset += namelen;