Re: [PATCH linux-next] dma-buf: use strscpy() to instead of strlcpy()

From: T.J. Mercier
Date: Tue Nov 29 2022 - 12:13:08 EST


On Thu, Nov 24, 2022 at 3:26 AM <yang.yang29@xxxxxxxxxx> wrote:
>
> From: Xu Panda <xu.panda@xxxxxxxxxx>
>
> The implementation of strscpy() is more robust and safer.
> That's now the recommended way to copy NUL terminated strings.
>
> Signed-off-by: Xu Panda <xu.panda@xxxxxxxxxx>
> Signed-off-by: Yang Yang <yang.yang29@xxxxxxx>
> ---
> drivers/dma-buf/dma-buf.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
> index b6c36914e7c6..485cf4f3431e 100644
> --- a/drivers/dma-buf/dma-buf.c
> +++ b/drivers/dma-buf/dma-buf.c
> @@ -51,7 +51,7 @@ static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
> dmabuf = dentry->d_fsdata;
> spin_lock(&dmabuf->name_lock);
> if (dmabuf->name)
> - ret = strlcpy(name, dmabuf->name, DMA_BUF_NAME_LEN);
> + ret = strscpy(name, dmabuf->name, DMA_BUF_NAME_LEN);

The type of ret should also be changed to ssize_t to capture the
negative error value which strlcpy does not have. We shouldn't ever
see that error condition here with the code the way it is now, but
let's not risk it.

> spin_unlock(&dmabuf->name_lock);
>
> return dynamic_dname(buffer, buflen, "/%s:%s",
> --
> 2.15.2