X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fcookies.c;h=a10971ca86e35fc09ccfc2436e6227224610c64c;hp=f9b206e134fb6245cdf75239976a6328faae95d5;hb=359dd167602071cfa62d6c586ca846ede5ed7c29;hpb=b9e9ad65ccf6c1fbf989852c5adbb0f840f9c58b diff --git a/src/cookies.c b/src/cookies.c index f9b206e1..a10971ca 100644 --- a/src/cookies.c +++ b/src/cookies.c @@ -1,6 +1,6 @@ /* Support for cookies. - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010, 2011 Free Software Foundation, Inc. This file is part of GNU Wget. @@ -350,6 +350,13 @@ parse_set_cookie (const char *set_cookie, bool silent) goto error; if (!value.b) goto error; + + /* If the value is quoted, do not modify it. */ + if (*(value.b - 1) == '"') + value.b--; + if (*value.e == '"') + value.e++; + cookie->attr = strdupdelim (name.b, name.e); cookie->value = strdupdelim (value.b, value.e); @@ -384,6 +391,9 @@ parse_set_cookie (const char *set_cookie, bool silent) goto error; BOUNDED_TO_ALLOCA (value.b, value.e, value_copy); + /* Check if expiration spec is valid. + If not, assume default (cookie doesn't expire, but valid only for + this session.) */ expires = http_atotm (value_copy); if (expires != (time_t) -1) { @@ -395,10 +405,6 @@ parse_set_cookie (const char *set_cookie, bool silent) if (cookie->expiry_time < cookies_now) cookie->discard_requested = 1; } - else - /* Error in expiration spec. Assume default (cookie doesn't - expire, but valid only for this session.) */ - ; } else if (TOKEN_IS (name, "max-age")) { @@ -426,9 +432,7 @@ parse_set_cookie (const char *set_cookie, bool silent) /* ignore value completely */ cookie->secure = 1; } - else - /* Ignore unrecognized attribute. */ - ; + /* else: Ignore unrecognized attribute. */ } if (*ptr) /* extract_param has encountered a syntax error */ @@ -441,7 +445,7 @@ parse_set_cookie (const char *set_cookie, bool silent) if (!silent) logprintf (LOG_NOTQUIET, _("Syntax error in Set-Cookie: %s at position %d.\n"), - quotearg_style (escape_quoting_style, set_cookie), + quotearg_style (escape_quoting_style, set_cookie), (int) (ptr - set_cookie)); delete_cookie (cookie); return NULL; @@ -684,7 +688,7 @@ cookie_handle_set_cookie (struct cookie_jar *jar, { logprintf (LOG_NOTQUIET, _("Cookie coming from %s attempted to set domain to %s\n"), - quotearg_style (escape_quoting_style, host), + quotearg_style (escape_quoting_style, host), quotearg_style (escape_quoting_style, cookie->domain)); xfree (cookie->domain); goto copy_domain; @@ -733,7 +737,7 @@ cookie_handle_set_cookie (struct cookie_jar *jar, /* Support for sending out cookies in HTTP requests, based on previously stored cookies. Entry point is `build_cookies_request'. */ - + /* Return a count of how many times CHR occurs in STRING. */ static int