diff options
author | Jay Satiro <raysatiro@yahoo.com> | 2015-06-03 21:48:47 -0400 |
---|---|---|
committer | Jay Satiro <raysatiro@yahoo.com> | 2015-06-03 21:48:47 -0400 |
commit | 3013bb6b1c8e63e46ed0324eddffa6c54228acd7 (patch) | |
tree | ac7fa2d8b88f69a0899f8e55bff143cd0f214a22 | |
parent | 001ab7d86092f715088a8611a675f8b2537f45b3 (diff) |
cookie: Stop exporting any-domain cookies
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
-rw-r--r-- | docs/examples/cookie_interface.c | 7 | ||||
-rw-r--r-- | docs/libcurl/opts/CURLOPT_COOKIELIST.3 | 3 | ||||
-rw-r--r-- | lib/cookie.c | 5 |
3 files changed, 13 insertions, 2 deletions
diff --git a/docs/examples/cookie_interface.c b/docs/examples/cookie_interface.c index 2e7c66db2..28ee7817c 100644 --- a/docs/examples/cookie_interface.c +++ b/docs/examples/cookie_interface.c @@ -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"); diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/docs/libcurl/opts/CURLOPT_COOKIELIST.3 index 1058936c7..937c79db8 100644 --- a/docs/libcurl/opts/CURLOPT_COOKIELIST.3 +++ b/docs/libcurl/opts/CURLOPT_COOKIELIST.3 @@ -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 diff --git a/lib/cookie.c b/lib/cookie.c index fd7ed4168..94f2a8b85 100644 --- a/lib/cookie.c +++ b/lib/cookie.c @@ -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); |