Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/lib/libedit (strncpy->strlcpy)



On Sun, May 31, 2020 at 07:24:24PM -0400, Christos Zoulas wrote:
> Module Name:	src
> Committed By:	christos
> Date:		Sun May 31 23:24:24 UTC 2020
> 
> Modified Files:
> 	src/lib/libedit: terminal.c tty.c
> 
> Log Message:
> use strlcpy() instead of strncpy() for gcc happiness
> 
...

> @@ -1319,10 +1319,8 @@ terminal_settc(EditLine *el, int argc __
>  	if (argv == NULL || argv[1] == NULL || argv[2] == NULL)
>  		return -1;
>  
> -	strncpy(what, ct_encode_string(argv[1], &el->el_scratch), sizeof(what));
> -	what[sizeof(what) - 1] = '\0';
> -	strncpy(how,  ct_encode_string(argv[2], &el->el_scratch), sizeof(how));
> -	how[sizeof(how) - 1] = '\0';
> +	strlcpy(what, ct_encode_string(argv[1], &el->el_scratch), sizeof(what));
> +	strlcpy(how,  ct_encode_string(argv[2], &el->el_scratch), sizeof(how));
>  

This feels not good.
strncpy->strlcpy has repercussions like how strlcpy doesn't zero out the
remaining length and thus leaks uninitialized data.

There has to be a reasonable way to handle these warnings instead of
rototilling which str*cpy function is used.


Home | Main Index | Thread Index | Old Index