]> granicus.if.org Git - curl/commitdiff
cookie: Stop exporting any-domain cookies
authorJay Satiro <raysatiro@yahoo.com>
Thu, 4 Jun 2015 01:48:47 +0000 (21:48 -0400)
committerJay Satiro <raysatiro@yahoo.com>
Thu, 4 Jun 2015 01:48:47 +0000 (21:48 -0400)
Prior to this change any-domain cookies (cookies without a domain that
are sent to any domain) were exported with domain name "unknown".

Bug: https://github.com/bagder/curl/issues/292

docs/examples/cookie_interface.c
docs/libcurl/opts/CURLOPT_COOKIELIST.3
lib/cookie.c

index 2e7c66db2c6db128814768a78e16c5fa98168c75..28ee7817cd4bc84964e42d4db989198c788e902d 100644 (file)
@@ -96,7 +96,12 @@ main(void)
       return 1;
     }
 
-    /* HTTP-header style cookie */
+    /* HTTP-header style cookie. If you use the Set-Cookie format and don't
+    specify a domain then the cookie is sent for any domain and will not be
+    modified, likely not what you intended. Starting in 7.43.0 any-domain
+    cookies will not be exported either. For more information refer to the
+    CURLOPT_COOKIELIST documentation.
+    */
     snprintf(nline, sizeof(nline),
       "Set-Cookie: OLD_PREF=3d141414bf4209321; "
       "expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com");
index 1058936c7ae17b6271a58dee73b4f9cd5b6cd482..937c79db85f8a6f9717bbaf73be1d00018ff923f 100644 (file)
@@ -43,6 +43,9 @@ transfer to that server, likely not what you intended. Either set a domain in
 Set-Cookie (doing that will include sub domains) or use the Netscape format as
 shown in EXAMPLE.
 
+Starting in 7.43.0 the aforementioned any-domain cookies will not appear in the
+lists exported by \fICURLINFO_COOKIELIST(3)\fP and \fICURLOPT_COOKIEJAR(3)\fP.
+
 Additionally, there are commands available that perform actions if you pass in
 these exact strings:
 .IP ALL
index fd7ed4168f9c0b28f84f3e97394e40a09a92a1f8..94f2a8b85d6e6369ef6fa775795f837376e7d0f6 100644 (file)
@@ -1277,6 +1277,8 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere)
     co = c->cookies;
 
     while(co) {
+      if(!co->domain)
+        continue;
       format_ptr = get_netscape_format(co);
       if(format_ptr == NULL) {
         fprintf(out, "#\n# Fatal libcurl error\n");
@@ -1310,7 +1312,8 @@ struct curl_slist *Curl_cookie_list(struct SessionHandle *data)
   c = data->cookies->cookies;
 
   while(c) {
-    /* fill the list with _all_ the cookies we know */
+    if(!c->domain)
+      continue;
     line = get_netscape_format(c);
     if(!line) {
       curl_slist_free_all(list);