diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2011-06-29 23:32:53 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2011-06-29 23:32:53 +0000 |
commit | a5dc6b9e6637c85d18510ac6446ee4a8a7955e7b (patch) | |
tree | be1bd0060a655cf61ec42b6a2ee932201f83464e /content | |
parent | 8577895dc1257d2e488390378f6cff9e9b9ced01 (diff) | |
download | netsurf-a5dc6b9e6637c85d18510ac6446ee4a8a7955e7b.tar.gz netsurf-a5dc6b9e6637c85d18510ac6446ee4a8a7955e7b.tar.bz2 |
Less broken WWW-Authenticate header parser
svn path=/trunk/netsurf/; revision=12542
Diffstat (limited to 'content')
-rw-r--r-- | content/fetchers/curl.c | 24 |
1 files 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) { |