summaryrefslogtreecommitdiff
path: root/content
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2011-02-25 00:41:16 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2011-02-25 00:41:16 +0000
commit2e04c57929aaae8b36b57e873b680b32304b29c4 (patch)
tree07f3e41b44175dad72412be8d10d99246c0a1972 /content
parent38ec3a917dae4782bc67871bec6ded3b87bbb8bc (diff)
downloadnetsurf-2e04c57929aaae8b36b57e873b680b32304b29c4.tar.gz
netsurf-2e04c57929aaae8b36b57e873b680b32304b29c4.tar.bz2
Fix WWW-Authenticate parsing to leave f->realm alone if there is no realm specified in the header
svn path=/trunk/netsurf/; revision=11793
Diffstat (limited to 'content')
-rw-r--r--content/fetchers/curl.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/content/fetchers/curl.c b/content/fetchers/curl.c
index 2d5f29a10..f272777b4 100644
--- a/content/fetchers/curl.c
+++ b/content/fetchers/curl.c
@@ -1048,12 +1048,6 @@ size_t fetch_curl_header(char *data, size_t size, size_t nmemb,
f->content_length = atol(data + i);
} else if (17 < size && strncasecmp(data, "WWW-Authenticate:", 17) == 0) {
/* extract the first Realm from WWW-Authenticate header */
- free(f->realm);
- f->realm = malloc(size);
- if (!f->realm) {
- LOG(("malloc failed"));
- return size;
- }
SKIP_ST(17);
while (i < (int) size - 5 &&
@@ -1064,15 +1058,19 @@ size_t fetch_curl_header(char *data, size_t size, size_t nmemb,
i++;
if (i < (int) size) {
- 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';
+ 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';
+ }
}
} else if (11 < size && strncasecmp(data, "Set-Cookie:", 11) == 0) {
/* extract Set-Cookie header */