mirror of
https://github.com/curl/curl.git
synced 2026-08-24 13:33:33 +03:00
cookies: using a share with cookies shouldn't enable the cookie engine
The 'share object' only sets the storage area for cookies. The "cookie engine" still needs to be enabled or activated using the normal cookie options. This caused the curl command line tool to accidentally use cookies without having been told to, since curl switched to using shared cookies in 7.66.0. Test 1166 verifies Updated test 506 Fixes #4429 Closes #4434
This commit is contained in:
parent
ed73509157
commit
d0a7ee3f61
7 changed files with 124 additions and 61 deletions
|
|
@ -1090,6 +1090,8 @@ Curl_cookie_add(struct Curl_easy *data,
|
|||
*
|
||||
* If 'newsession' is TRUE, discard all "session cookies" on read from file.
|
||||
*
|
||||
* Note that 'data' might be called as NULL pointer.
|
||||
*
|
||||
* Returns NULL on out of memory. Invalid cookies are ignored.
|
||||
****************************************************************************/
|
||||
struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
|
||||
|
|
@ -1160,6 +1162,8 @@ struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
|
|||
}
|
||||
|
||||
c->running = TRUE; /* now, we're running */
|
||||
if(data)
|
||||
data->state.cookie_engine = TRUE;
|
||||
|
||||
return c;
|
||||
|
||||
|
|
|
|||
|
|
@ -2676,7 +2676,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
|
|||
struct Cookie *co = NULL; /* no cookies from start */
|
||||
int count = 0;
|
||||
|
||||
if(data->cookies) {
|
||||
if(data->cookies && data->state.cookie_engine) {
|
||||
Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
|
||||
co = Curl_cookie_getlist(data->cookies,
|
||||
conn->allocptr.cookiehost?
|
||||
|
|
@ -4013,7 +4013,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
|
|||
data->state.resume_from = 0; /* get everything */
|
||||
}
|
||||
#if !defined(CURL_DISABLE_COOKIES)
|
||||
else if(data->cookies &&
|
||||
else if(data->cookies && data->state.cookie_engine &&
|
||||
checkprefix("Set-Cookie:", k->p)) {
|
||||
Curl_share_lock(data, CURL_LOCK_DATA_COOKIE,
|
||||
CURL_LOCK_ACCESS_SINGLE);
|
||||
|
|
|
|||
|
|
@ -1397,6 +1397,7 @@ struct UrlState {
|
|||
invoked twice when the multi interface is used. */
|
||||
BIT(stream_depends_e); /* set or don't set the Exclusive bit */
|
||||
BIT(previouslypending); /* this transfer WAS in the multi->pending queue */
|
||||
BIT(cookie_engine);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue