Re: [PATCH] xfs: mark sb_fname as nonstring

From: Arnd Bergmann
Date: Fri May 25 2018 - 16:18:24 EST


On Fri, May 25, 2018 at 6:52 PM, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
>> diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
>> index 84fbf164cbc3..eb79f2bc4dcc 100644
>> --- a/fs/xfs/xfs_ioctl.c
>> +++ b/fs/xfs/xfs_ioctl.c
>> @@ -1819,12 +1819,12 @@ xfs_ioc_getlabel(
>> BUILD_BUG_ON(sizeof(sbp->sb_fname) > FSLABEL_MAX);
>>
>> spin_lock(&mp->m_sb_lock);
>> - strncpy(label, sbp->sb_fname, sizeof(sbp->sb_fname));
>> + strncpy(label, sbp->sb_fname, XFSLABEL_MAX);
>> spin_unlock(&mp->m_sb_lock);
>
> Hmm, shouldn't we just do a memcpy here?

I thought about that as well, but decided that strncpy()'s zero-padding
is better here than padding with potentially random contents of the user
space stack.

> Also given that the kernel never even looks at sb_fname maybe
> we can turn into an array of unsigned chars to escape those string
> warnings?

I don't think that makes a difference to gcc.

Arnd