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

Adriano Cordova adrianox at gmail.com
Tue Nov 26 17:19:20 CET 2024


From: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>

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>
Signed-off-by: Adriano Cordova <adrianox at gmail.com>
---

Changes in v2:
- removed double check of wget_info->headers
- removed an unnecessary "- 1"
 net/wget.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/net/wget.c b/net/wget.c
index 3bc2522cde..5d70b7a82e 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 (hlen < MAX_HTTP_HEADERS_SIZE)
+			strncpy(wget_info->headers, pkt, hlen);
+		else
+			hlen = 0;
+		wget_info->headers[hlen] = 0;
+	}
 
 	//Get status code
 	first_space = strchr(pkt, ' ');
-- 
2.43.0



More information about the U-Boot mailing list