diff options
author | Daniel Stenberg <daniel@haxx.se> | 2021-10-26 17:47:14 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2021-10-27 10:26:15 +0200 |
commit | c67a32fc560913caff7875bb4fe98abb9991798c (patch) | |
tree | dcb0427babe485d0c2c3bb766b2b9a264036e5ff | |
parent | c40914dbdb2214e30f598bf88beca47f21d69ad8 (diff) | |
download | curl-c67a32fc560913caff7875bb4fe98abb9991798c.tar.gz |
http: reject HTTP response codes < 100
... which then also includes negative ones as test 1430 uses.
This makes native + hyper backend act identically on this and therefore
test 1430 can now be enabled when building with hyper. Adjust test 1431
as well.
Closes #7909
-rw-r--r-- | lib/http.c | 8 | ||||
-rw-r--r-- | tests/data/DISABLED | 2 | ||||
-rw-r--r-- | tests/data/test1430 | 7 | ||||
-rw-r--r-- | tests/data/test1431 | 5 |
4 files changed, 16 insertions, 6 deletions
diff --git a/lib/http.c b/lib/http.c index 4777750ec..78ad10ede 100644 --- a/lib/http.c +++ b/lib/http.c @@ -4240,8 +4240,12 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, /* There can only be a 4th response code digit stored in 'digit4' if all the other fields were parsed and stored first, so nc is 5 when - digit4 a digit */ - else if(ISDIGIT(digit4)) { + digit4 a digit. + + The sscanf() line above will also allow zero-prefixed and negative + numbers, so we check for that too here. + */ + else if(ISDIGIT(digit4) || (k->httpcode < 100)) { failf(data, "Unsupported response code in HTTP response"); return CURLE_UNSUPPORTED_PROTOCOL; } diff --git a/tests/data/DISABLED b/tests/data/DISABLED index c6998993d..792bfb090 100644 --- a/tests/data/DISABLED +++ b/tests/data/DISABLED @@ -65,8 +65,6 @@ 1156 1160 1417 -1430 -1431 1455 1456 1525 diff --git a/tests/data/test1430 b/tests/data/test1430 index 3dbeae856..8ed513c60 100644 --- a/tests/data/test1430 +++ b/tests/data/test1430 @@ -7,7 +7,7 @@ HTTP GET </info> <reply> -<data> +<data nocheck="yes"> HTTP/1.1 -12 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake @@ -47,5 +47,10 @@ User-Agent: curl/%VERSION Accept: */*
</protocol> +# 1 - CURLE_UNSUPPORTED_PROTOCOL +# Due to invalid HTTP response code +<errorcode> +1 +</errorcode> </verify> </testcase> diff --git a/tests/data/test1431 b/tests/data/test1431 index be6277d89..26cf4aaf7 100644 --- a/tests/data/test1431 +++ b/tests/data/test1431 @@ -7,7 +7,7 @@ HTTP GET </info> <reply> -<data> +<data nocheck="yes"> HTTP/1.1 2 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake @@ -47,5 +47,8 @@ User-Agent: curl/%VERSION Accept: */*
</protocol> +<errorcode> +1 +</errorcode> </verify> </testcase> |