The commit
e650dbde86d4 that stripped off [brackets] from ipv6-only host
headers for the sake of cookie parsing wrongly incremented the host
pointer which would cause a bad free() call later on.
the bracket has been closed */
int startsearch = 0;
if(*cookiehost == '[') {
- char *closingbracket = strchr(++cookiehost, ']');
+ char *closingbracket;
+ closingbracket = strchr(cookiehost+1, ']');
if(closingbracket)
*closingbracket = 0;
+ /* since the 'cookiehost' is an allocated memory area that will be
+ freed later we cannot simply increment the pointer */
+ memmove(cookiehost, cookiehost + 1, strlen(cookiehost) - 1);
}
else {
char *colon = strchr(cookiehost + startsearch, ':');