From: Dr. David von Oheimb Date: Mon, 8 Mar 2021 08:59:35 +0000 (+0100) Subject: OSSL_parse_url(): Improve handling of IPv6 addresses X-Git-Tag: openssl-3.0.0-alpha14~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=231837911980ff55a661e2509642442435082c90;p=thirdparty%2Fopenssl.git OSSL_parse_url(): Improve handling of IPv6 addresses Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/14630) --- diff --git a/crypto/http/http_lib.c b/crypto/http/http_lib.c index 3bf642a4f41..f0fc770f22d 100644 --- a/crypto/http/http_lib.c +++ b/crypto/http/http_lib.c @@ -87,11 +87,10 @@ int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost, /* parse host name/address as far as needed here */ if (host[0] == '[') { /* ipv6 literal, which may include ':' */ - host++; - host_end = strchr(host, ']'); + host_end = strchr(host + 1, ']'); if (host_end == NULL) goto parse_err; - p = host_end + 1; + p = ++host_end; } else { /* look for start of optional port, path, query, or fragment */ host_end = strchr(host, ':'); diff --git a/test/http_test.c b/test/http_test.c index e59ef638332..0a3389c15f3 100644 --- a/test/http_test.c +++ b/test/http_test.c @@ -204,7 +204,7 @@ static int test_http_url_ipv4(void) static int test_http_url_ipv6(void) { - return test_http_url_ok("http://[FF01::101]:6", 0, "FF01::101", "6", "/"); + return test_http_url_ok("http://[FF01::101]:6", 0, "[FF01::101]", "6", "/"); } static int test_http_url_invalid(const char *url)