[PATCH 1/1] net: zero terminate string with headers in wget_fill_info()

Jerome Forissier jerome.forissier at linaro.org
Tue Nov 26 16:35:06 CET 2024



On 11/25/24 18:16, Heinrich Schuchardt wrote:
> Commit 2dd076a9c1b4 ("net: wget: integrate struct wget_info into legacy
> wget code") introduced function wget_fill_info() which retrieves the
> headers from the HTTP server response. As we want to parse the string in
> later patches we need to ensure that it is NUL terminated.
> 
> We must further check that wget_info->headers in not NULL.
> Otherwise a crash occurs.
> 
> Fixes: 2dd076a9c1b4 ("net: wget: integrate struct wget_info into legacy wget code")
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
>  net/wget.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/net/wget.c b/net/wget.c
> index 3bc2522cde5..b290ca1843e 100644
> --- a/net/wget.c
> +++ b/net/wget.c
> @@ -208,8 +208,13 @@ static void wget_fill_info(const uchar *pkt, int hlen)
>  	const char *second_space;
>  	char *pos, *end;
>  
> -	if (wget_info->headers && hlen < MAX_HTTP_HEADERS_SIZE)
> -		strncpy(wget_info->headers, pkt, hlen);
> +	if (wget_info->headers) {
> +		if (wget_info->headers && hlen < MAX_HTTP_HEADERS_SIZE - 1)

No need to check wget_info->headers twice. Why -1? I can't find where
wget_info->headers is allocated in the original series btw.

> +			strncpy(wget_info->headers, pkt, hlen);
> +		else
> +			hlen = 0;
> +		wget_info->headers[hlen] = 0;
> +	}
>  
>  	//Get status code
>  	first_space = strchr(pkt, ' ');

Thanks,
-- 
Jerome


More information about the U-Boot mailing list