Re: [PATCH] sh: Replace all non-returning strlcpy with strscpy

John Paul Adrian Glaubitz <[email protected]>
Newsgroups gmane.linux.kernel,gmane.linux.ports.sh.devel
Message-ID <63d247d3de5a0ca289c39dff930f83d7bbc7c4a5.camel@physik.fu-berlin.de>
On Tue, 2023-05-30 at 16:30 +0000, Azeem Shaikh wrote:
> 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].
> In an effort to remove strlcpy() completely [2], replace
> strlcpy() here with strscpy().
> No return values were used, so direct replacement is safe.
> 
> [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 <[email protected]>
> ---
>  arch/sh/drivers/dma/dma-api.c |    2 +-
>  arch/sh/kernel/setup.c        |    4 ++--
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/sh/drivers/dma/dma-api.c b/arch/sh/drivers/dma/dma-api.c
> index ab9170494dcc..89cd4a3b4cca 100644
> --- a/arch/sh/drivers/dma/dma-api.c
> +++ b/arch/sh/drivers/dma/dma-api.c
> @@ -198,7 +198,7 @@ int request_dma(unsigned int chan, const char *dev_id)
>  	if (atomic_xchg(&channel->busy, 1))
>  		return -EBUSY;
>  
> -	strlcpy(channel->dev_id, dev_id, sizeof(channel->dev_id));
> +	strscpy(channel->dev_id, dev_id, sizeof(channel->dev_id));
>  
>  	if (info->ops->request) {
>  		result = info->ops->request(channel);
> diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
> index af977ec4ca5e..e4f0f9a1d355 100644
> --- a/arch/sh/kernel/setup.c
> +++ b/arch/sh/kernel/setup.c
> @@ -304,9 +304,9 @@ void __init setup_arch(char **cmdline_p)
>  	bss_resource.end = virt_to_phys(__bss_stop)-1;
>  
>  #ifdef CONFIG_CMDLINE_OVERWRITE
> -	strlcpy(command_line, CONFIG_CMDLINE, sizeof(command_line));
> +	strscpy(command_line, CONFIG_CMDLINE, sizeof(command_line));
>  #else
> -	strlcpy(command_line, COMMAND_LINE, sizeof(command_line));
> +	strscpy(command_line, COMMAND_LINE, sizeof(command_line));
>  #ifdef CONFIG_CMDLINE_EXTEND
>  	strlcat(command_line, " ", sizeof(command_line));
>  	strlcat(command_line, CONFIG_CMDLINE, sizeof(command_line));

Tested-by: John Paul Adrian Glaubitz <[email protected]>

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer
`. `'   Physicist
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.