Permalink
Browse files

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
  • Loading branch information...
1 parent b50e9e9 commit e650dbde86d47fc9ded3a8328b8d765fce54078b @strainu strainu committed with bagder Mar 10, 2012
Showing with 13 additions and 3 deletions.
  1. +13 −3 lib/http.c
View
@@ -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;
}

0 comments on commit e650dbd

Please sign in to comment.