- 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:
Daniel Stenberg 2009-05-11 09:55:28 +00:00
Родитель 6e1632c606
Коммит 242a17b9e0
6 изменённых файлов: 29 добавлений и 3 удалений

Просмотреть файл

@ -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 */