diff options
author | Daniel Stenberg <daniel@haxx.se> | 2021-12-03 15:56:58 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2021-12-03 22:58:41 +0100 |
commit | 92d1aee8b16bb5aa416368cb54ded732cc39c407 (patch) | |
tree | 5aae76f0c95442018560049f665760ec2a032a7c | |
parent | f67b4d37b7df7772f8a0b0a0e05935161f314cc7 (diff) | |
download | curl-92d1aee8b16bb5aa416368cb54ded732cc39c407.tar.gz |
urlapi: accept port number zero
This is a regression since 7.62.0 (fb30ac5a2d).
Updated test 1560 accordingly
Reported-by: Brad Fitzpatrick
Fixes #8090
Closes #8091
-rw-r--r-- | lib/urlapi.c | 4 | ||||
-rw-r--r-- | tests/libtest/lib1560.c | 6 |
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/urlapi.c b/lib/urlapi.c index 372ffe50a..d88db2978 100644 --- a/lib/urlapi.c +++ b/lib/urlapi.c @@ -605,9 +605,7 @@ UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname, port = strtol(portptr + 1, &rest, 10); /* Port number must be decimal */ - if((port <= 0) || (port > 0xffff)) - /* Single unix standard says port numbers are 16 bits long, but we don't - treat port zero as OK. */ + if(port > 0xffff) return CURLUE_BAD_PORT_NUMBER; if(rest[0]) diff --git a/tests/libtest/lib1560.c b/tests/libtest/lib1560.c index f09454c45..7a4e12b78 100644 --- a/tests/libtest/lib1560.c +++ b/tests/libtest/lib1560.c @@ -308,9 +308,13 @@ static const struct testcase get_parts_list[] ={ {"https://example.com:65536", "", CURLU_DEFAULT_SCHEME, 0, CURLUE_BAD_PORT_NUMBER}, - {"https://example.com:0#moo", + {"https://example.com:-1#moo", "", CURLU_DEFAULT_SCHEME, 0, CURLUE_BAD_PORT_NUMBER}, + {"https://example.com:0#moo", + "https | [11] | [12] | [13] | example.com | 0 | / | " + "[16] | moo", + CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"https://example.com:01#moo", "https | [11] | [12] | [13] | example.com | 1 | / | " "[16] | moo", |