diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2020-05-07 12:24:27 +0200 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2020-05-08 08:47:29 +0200 | 
| commit | 7f1c098728529b206e9118dcbccfd2611f8a70e4 (patch) | |
| tree | 5011b76b02a415b136bc605c2b4af0dc333b6875 | |
| parent | 11e4ac8291d16f5d5c5252a0ad4cf9d29bce2718 (diff) | |
urlapi: accept :: as a valid IPv6 address
Text 1560 is extended to verify.
Reported-by: Pavel Volgarev
Fixes #5344
Closes #5351
| -rw-r--r-- | lib/urlapi.c | 2 | ||||
| -rw-r--r-- | tests/libtest/lib1560.c | 9 | 
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/urlapi.c b/lib/urlapi.c index 506e244dc..37937fbca 100644 --- a/lib/urlapi.c +++ b/lib/urlapi.c @@ -606,7 +606,7 @@ static CURLUcode hostname_check(struct Curl_URL *u, char *hostname)      char dest[16]; /* fits a binary IPv6 address */  #endif      const char *l = "0123456789abcdefABCDEF:."; -    if(hlen < 5) /* '[::1]' is the shortest possible valid string */ +    if(hlen < 4) /* '[::]' is the shortest possible valid string */        return CURLUE_MALFORMED_INPUT;      hostname++;      hlen -= 2; diff --git a/tests/libtest/lib1560.c b/tests/libtest/lib1560.c index fbe642c20..ed1a2e4dd 100644 --- a/tests/libtest/lib1560.c +++ b/tests/libtest/lib1560.c @@ -129,6 +129,15 @@ struct querycase {  };  static struct testcase get_parts_list[] ={ +  {"[::1]", +   "http | [11] | [12] | [13] | [::1] | [15] | / | [16] | [17]", +   CURLU_GUESS_SCHEME, 0, CURLUE_OK }, +  {"[::]", +   "http | [11] | [12] | [13] | [::] | [15] | / | [16] | [17]", +   CURLU_GUESS_SCHEME, 0, CURLUE_OK }, +  {"https://[::1]", +   "https | [11] | [12] | [13] | [::1] | [15] | / | [16] | [17]", +   0, 0, CURLUE_OK },    {"user:moo@ftp.example.com/color/#green?no-black",     "ftp | user | moo | [13] | ftp.example.com | [15] | /color/ | [16] | "     "green?no-black",  | 
