- Balint Szilakszi reported a memory leak when libcurl did gzip decompression
of streams that had some parts (legitimately) missing. We now provide and use a proper cleanup function for the content encoding submodule. http://curl.haxx.se/mail/lib-2009-05/0092.html
This commit is contained in:
Родитель
6e1632c606
Коммит
242a17b9e0
5
CHANGES
5
CHANGES
|
@ -7,6 +7,11 @@
|
|||
Changelog
|
||||
|
||||
Daniel Stenberg (11 May 2009)
|
||||
- Balint Szilakszi reported a memory leak when libcurl did gzip decompression
|
||||
of streams that had some parts (legitimately) missing. We now provide and use
|
||||
a proper cleanup function for the content encoding submodule.
|
||||
http://curl.haxx.se/mail/lib-2009-05/0092.html
|
||||
|
||||
- Kamil Dudka provided a fix for libcurl-NSS reported by Michael Cronenworth
|
||||
at https://bugzilla.redhat.com/show_bug.cgi?id=453612#c12
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ This release includes the following bugfixes:
|
|||
o fixed the Curl_getoff_all_pipelines SIGSEGV
|
||||
o POST, NTLM and following a redirect hang
|
||||
o libcurl+NSS endless loop on incorrect password for private key
|
||||
o gzip decompression memory leak
|
||||
|
||||
This release includes the following known bugs:
|
||||
|
||||
|
@ -59,6 +60,7 @@ advice from friends like these:
|
|||
Kamil Dudka, Jim Freeman, Daniel Johnson, Toshio Kuratomi, Martin Storsjo,
|
||||
Pramod Sharma, Gisle Vanem, Lenaic Lefever, Rainer Koenig, Sven Wegener,
|
||||
Tim Chen, Constantine Sapuntzakis, David McCreedy, Michael Smith,
|
||||
Colin Watson, Ebenezer Ikonne, Laurent Rabret, Michael Cronenworth
|
||||
Colin Watson, Ebenezer Ikonne, Laurent Rabret, Michael Cronenworth,
|
||||
Balint Szilakszi
|
||||
|
||||
Thanks! (and sorry if I forgot to mention someone)
|
||||
|
|
|
@ -9,10 +9,12 @@ To be addressed in 7.19.5 (planned release: May 2009)
|
|||
- awaiting patch rework/breakdown
|
||||
|
||||
235 - #2784055, connect race with multi and socks proxy
|
||||
Code adjustment for FTP over socks proxy remains
|
||||
|
||||
236 - timeout in milliseconds doesn't seem to work
|
||||
http://curl.haxx.se/mail/lib-2009-05/0021.html
|
||||
|
||||
239 -
|
||||
240 -
|
||||
|
||||
To be addressed in 7.19.6 (planned release: July 2009)
|
||||
=========================
|
||||
|
|
|
@ -414,4 +414,14 @@ Curl_unencode_gzip_write(struct connectdata *conn,
|
|||
return inflate_stream(conn, k);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Curl_unencode_cleanup(struct connectdata *conn)
|
||||
{
|
||||
struct SessionHandle *data = conn->data;
|
||||
struct SingleRequest *k = &data->req;
|
||||
z_stream *z = &k->z;
|
||||
if(k->zlib_init != ZLIB_UNINIT)
|
||||
(void) exit_zlib(z, &k->zlib_init, CURLE_OK);
|
||||
}
|
||||
|
||||
#endif /* HAVE_LIBZ */
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
|
@ -29,8 +29,11 @@
|
|||
*/
|
||||
#ifdef HAVE_LIBZ
|
||||
#define ALL_CONTENT_ENCODINGS "deflate, gzip"
|
||||
/* force a cleanup */
|
||||
void Curl_unencode_cleanup(struct connectdata *conn);
|
||||
#else
|
||||
#define ALL_CONTENT_ENCODINGS "identity"
|
||||
#define Curl_unencode_cleanup(x)
|
||||
#endif
|
||||
|
||||
CURLcode Curl_unencode_deflate_write(struct connectdata *conn,
|
||||
|
@ -42,4 +45,5 @@ Curl_unencode_gzip_write(struct connectdata *conn,
|
|||
struct SingleRequest *k,
|
||||
ssize_t nread);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -97,6 +97,7 @@
|
|||
#include "strtoofft.h"
|
||||
#include "multiif.h"
|
||||
#include "rawstr.h"
|
||||
#include "content_encoding.h"
|
||||
|
||||
#define _MPRINTF_REPLACE /* use our functions only */
|
||||
#include <curl/mprintf.h>
|
||||
|
@ -1917,6 +1918,8 @@ CURLcode Curl_http_done(struct connectdata *conn,
|
|||
struct HTTP *http =data->state.proto.http;
|
||||
(void)premature; /* not used */
|
||||
|
||||
Curl_unencode_cleanup(conn);
|
||||
|
||||
/* set the proper values (possibly modified on POST) */
|
||||
conn->fread_func = data->set.fread_func; /* restore */
|
||||
conn->fread_in = data->set.in; /* restore */
|
||||
|
|
Загрузка…
Ссылка в новой задаче