diff options
author | corvid <corvid@lavabit.com> | 2011-11-11 18:18:23 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2011-11-11 18:18:23 +0000 |
commit | 93018bb0f735888fd66de3ce5a46de3daf918a43 (patch) | |
tree | 3468f474868efee54ea0a9a5f801576ba8f6a0c0 | |
parent | 546bb6fcafd963993d8588d48cad03931d6f6e27 (diff) |
fix IPv6 addr recognition
I was under the impression that the brackets were part of the host syntax,
but a_Url_hostname() shows that they are part of the _authority_ and are
stripped out when making the hostname.
-rw-r--r-- | dpi/cookies.c | 4 | ||||
-rw-r--r-- | src/url.c | 4 | ||||
-rw-r--r-- | test/cookies.c | 8 |
3 files changed, 8 insertions, 8 deletions
diff --git a/dpi/cookies.c b/dpi/cookies.c index 93048a5c..f73756f4 100644 --- a/dpi/cookies.c +++ b/dpi/cookies.c @@ -920,10 +920,10 @@ static bool_t Cookies_domain_is_ip(const char *domain) _MSG("an IPv4 address\n"); return TRUE; } - if (*domain == '[' && + if (strchr(domain, ':') && (len == strspn(domain, "0123456789abcdefABCDEF:.[]"))) { /* The precise format is shown in section 3.2.2 of rfc 3986 */ - _MSG("an IPv6 address\n"); + MSG("an IPv6 address\n"); return TRUE; } return FALSE; @@ -652,10 +652,10 @@ static bool_t Url_host_is_ip(const char *host) _MSG("an IPv4 address\n"); return TRUE; } - if (*host == '[' && + if (strchr(host, ':') && (len == strspn(host, "0123456789abcdefABCDEF:.[]"))) { /* The precise format is shown in section 3.2.2 of rfc 3986 */ - _MSG("an IPv6 address\n"); + MSG("an IPv6 address\n"); return TRUE; } return FALSE; diff --git a/test/cookies.c b/test/cookies.c index af59cb48..1468c248 100644 --- a/test/cookies.c +++ b/test/cookies.c @@ -918,13 +918,13 @@ int main() /* SOME IP ADDRS */ - a_Cookies_set("name=val", "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]", + a_Cookies_set("name=val", "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210", "/", NULL); expect(__LINE__, "Cookie: name=val\r\n", "http", - "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]", "/"); + "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210", "/"); - a_Cookies_set("name=val", "[::FFFF:129.144.52.38]", "/", NULL); - expect(__LINE__, "Cookie: name=val\r\n", "http", "[::FFFF:129.144.52.38]", + a_Cookies_set("name=val", "::FFFF:129.144.52.38", "/", NULL); + expect(__LINE__, "Cookie: name=val\r\n", "http", "::FFFF:129.144.52.38", "/"); a_Cookies_set("name=val", "127.0.0.1", "/", NULL); |