From a5dc6b9e6637c85d18510ac6446ee4a8a7955e7b Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Wed, 29 Jun 2011 23:32:53 +0000 Subject: Less broken WWW-Authenticate header parser svn path=/trunk/netsurf/; revision=12542 --- content/fetchers/curl.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/content/fetchers/curl.c b/content/fetchers/curl.c index 869c25f0c..6fedda539 100644 --- a/content/fetchers/curl.c +++ b/content/fetchers/curl.c @@ -1083,18 +1083,18 @@ size_t fetch_curl_header(char *data, size_t size, size_t nmemb, i++; if (i < (int) size) { - free(f->realm); - f->realm = malloc(size - i + 1); - if (f->realm != NULL) { - strncpy(f->realm, data + i, size - i); - f->realm[size - i] = '\0'; - for (i = size - i - 1; i >= 0 && - (f->realm[i] == ' ' || - f->realm[i] == '"' || - f->realm[i] == '\t' || - f->realm[i] == '\r' || - f->realm[i] == '\n'); --i) - f->realm[i] = '\0'; + size_t end = i; + + while (end < size && data[end] != '"') + ++end; + + if (end < size) { + free(f->realm); + f->realm = malloc(end - i + 1); + if (f->realm != NULL) { + strncpy(f->realm, data + i, end - i); + f->realm[end - i] = '\0'; + } } } } else if (11 < size && strncasecmp(data, "Set-Cookie:", 11) == 0) { -- cgit v1.2.3