]> sjero.net Git - wget/blobdiff - src/cookies.c
warc: fix format string for off_t in CDX function.
[wget] / src / cookies.c
index 854139046c65f009ed7d1928ac2291f110b59b8c..a10971ca86e35fc09ccfc2436e6227224610c64c 100644 (file)
@@ -1,6 +1,6 @@
 /* Support for cookies.
-   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-   2008 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