summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2020-05-07 12:24:27 +0200
committerDaniel Stenberg <daniel@haxx.se>2020-05-07 12:24:27 +0200
commitfbd0c53e9efe71117be7d0e9f14198fa7de2d9a2 (patch)
tree53665655279fd2bb53dcd9b5cf51b46e5241acd4
parentcad1f46ce3b4c3483ee14903c7f06aace11deef0 (diff)
downloadcurl-fbd0c53e9efe71117be7d0e9f14198fa7de2d9a2.tar.gz
urlapi: accept :: as a valid IPv6 addressbagder/urlparser-ipv6-zero
Reported-by: Pavel Volgarev Fixes #5344
-rw-r--r--lib/urlapi.c2
-rw-r--r--tests/libtest/lib1560.c9
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",