From: Andrei Cipu Date: Sat, 10 Mar 2012 15:48:59 +0000 (+0100) Subject: Curl_http: strip off [brackets] from ipv6-only host headers X-Git-Tag: curl-7_25_0~26 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e650dbde86d47fc9ded3a8328b8d765fce54078b;p=curl Curl_http: strip off [brackets] from ipv6-only host headers Since the host name is passed in to the cookie engine it will not work correctly if the brackets are left in the name. Bug:http://curl.haxx.se/mail/lib-2012-03/0036.html --- diff --git a/lib/http.c b/lib/http.c index 374de7d21..c7a6df015 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1840,9 +1840,19 @@ CURLcode Curl_http(struct connectdata *conn, bool *done) /* ignore empty data */ free(cookiehost); else { - char *colon = strchr(cookiehost, ':'); - if(colon) - *colon = 0; /* The host must not include an embedded port number */ + /* If the host begins with '[', we start searching for the port after + the bracket has been closed */ + int startsearch = 0; + if(*cookiehost == '[') { + char *closingbracket = strchr(++cookiehost, ']'); + if(closingbracket) + *closingbracket = 0; + } + else { + char *colon = strchr(cookiehost + startsearch, ':'); + if(colon) + *colon = 0; /* The host must not include an embedded port number */ + } Curl_safefree(conn->allocptr.cookiehost); conn->allocptr.cookiehost = cookiehost; }