1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 08:08:50 -05:00

"Igor" pointed out that CURLOPT_COOKIELIST set to "ALL" leaked memory, and so

did "SESS". Fixed now.
This commit is contained in:
Daniel Stenberg 2008-01-23 22:22:12 +00:00
parent 79cb74f03a
commit c914e6ea5d
5 changed files with 23 additions and 9 deletions

View File

@ -6,9 +6,16 @@
Changelog Changelog
<<<<<<< CHANGES
Daniel S (23 Jan 2008)
- "Igor" pointed out that CURLOPT_COOKIELIST set to "ALL" leaked memory, and so
did "SESS". Fixed now.
=======
Yang Tse (22 Jan 2008) Yang Tse (22 Jan 2008)
- Check poll.h at configuration time, and use it when sys/poll.h unavailable - Check poll.h at configuration time, and use it when sys/poll.h unavailable
>>>>>>> 1.1234
Daniel S (22 Jan 2008) Daniel S (22 Jan 2008)
- Dmitry Kurochkin removed the cancelled state for pipelining, as we agreed - Dmitry Kurochkin removed the cancelled state for pipelining, as we agreed
that it is bad anyway. Starting now, removing a handle that is in used in a that it is bad anyway. Starting now, removing a handle that is in used in a

View File

@ -60,6 +60,7 @@ This release includes the following bugfixes:
o curl_multi_fdset() failed to return socket while doing CONNECT over proxy o curl_multi_fdset() failed to return socket while doing CONNECT over proxy
o curl_multi_remove_handle() on a handle that is in used for a pipeline now o curl_multi_remove_handle() on a handle that is in used for a pipeline now
break that pipeline break that pipeline
o CURLOPT_COOKIELIST memory leaks
This release includes the following known bugs: This release includes the following known bugs:

View File

@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___ * | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@ -812,7 +812,7 @@ struct Cookie *Curl_cookie_getlist(struct CookieInfo *c,
void Curl_cookie_clearall(struct CookieInfo *cookies) void Curl_cookie_clearall(struct CookieInfo *cookies)
{ {
if(cookies) { if(cookies) {
Curl_cookie_freelist(cookies->cookies); Curl_cookie_freelist(cookies->cookies, TRUE);
cookies->cookies = NULL; cookies->cookies = NULL;
cookies->numcookies = 0; cookies->numcookies = 0;
} }
@ -824,16 +824,22 @@ void Curl_cookie_clearall(struct CookieInfo *cookies)
* *
* Free a list of cookies previously returned by Curl_cookie_getlist(); * Free a list of cookies previously returned by Curl_cookie_getlist();
* *
* The 'cookiestoo' argument tells this function whether to just free the
* list or actually also free all cookies within the list as well.
*
****************************************************************************/ ****************************************************************************/
void Curl_cookie_freelist(struct Cookie *co) void Curl_cookie_freelist(struct Cookie *co, bool cookiestoo)
{ {
struct Cookie *next; struct Cookie *next;
if(co) { if(co) {
while(co) { while(co) {
next = co->next; next = co->next;
free(co); /* we only free the struct since the "members" are all if(cookiestoo)
just copied! */ freecookie(co);
else
free(co); /* we only free the struct since the "members" are all just
pointed out in the main cookie list! */
co = next; co = next;
} }
} }
@ -867,7 +873,7 @@ void Curl_cookie_clearsess(struct CookieInfo *cookies)
else else
prev->next = next; prev->next = next;
free(curr); freecookie(curr);
cookies->numcookies--; cookies->numcookies--;
} }
else else

View File

@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___ * | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@ -91,7 +91,7 @@ struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
const char *, struct CookieInfo *, bool); const char *, struct CookieInfo *, bool);
struct Cookie *Curl_cookie_getlist(struct CookieInfo *, const char *, struct Cookie *Curl_cookie_getlist(struct CookieInfo *, const char *,
const char *, bool); const char *, bool);
void Curl_cookie_freelist(struct Cookie *); void Curl_cookie_freelist(struct Cookie *cookies, bool cookiestoo);
void Curl_cookie_clearall(struct CookieInfo *cookies); void Curl_cookie_clearall(struct CookieInfo *cookies);
void Curl_cookie_clearsess(struct CookieInfo *cookies); void Curl_cookie_clearsess(struct CookieInfo *cookies);
void Curl_cookie_cleanup(struct CookieInfo *); void Curl_cookie_cleanup(struct CookieInfo *);

View File

@ -2374,7 +2374,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
} }
co = co->next; /* next cookie please */ co = co->next; /* next cookie please */
} }
Curl_cookie_freelist(store); /* free the cookie list */ Curl_cookie_freelist(store, FALSE); /* free the cookie list */
} }
if(addcookies && (CURLE_OK == result)) { if(addcookies && (CURLE_OK == result)) {
if(!count) if(!count)