From 7f1c098728529b206e9118dcbccfd2611f8a70e4 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 7 May 2020 12:24:27 +0200 Subject: urlapi: accept :: as a valid IPv6 address Text 1560 is extended to verify. Reported-by: Pavel Volgarev Fixes #5344 Closes #5351 --- lib/urlapi.c | 2 +- tests/libtest/lib1560.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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", -- cgit v1.2.3