From 15e5cf60882f7e9112394b0a3003f4aa9eb31024 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 21 Mar 2006 20:31:27 +0000 Subject: Fix memory leak when uncompressing concatenated zlib streams. Unit tests and tor client work; looks ok. svn:r6211 --- src/common/torgzip.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/common/torgzip.c b/src/common/torgzip.c index 1f78089f6..12cc7ec96 100644 --- a/src/common/torgzip.c +++ b/src/common/torgzip.c @@ -205,9 +205,10 @@ tor_gzip_uncompress(char **out, size_t *out_len, if (stream->avail_in == 0) goto done; /* There may be more compressed data here. */ - /* XXX But if so, this is not the right way to find it. If - * we call inflateInit2 below, stream->state will get - * re-zcalloc'ed and we'll leak the old one. -RD */ + if ((r = inflateEnd(stream)) != Z_OK) { + log_warn(LD_GENERAL, "Error freeing gzip structures"); + goto err; + } if (inflateInit2(stream, method_bits(method)) != Z_OK) { log_warn(LD_GENERAL, "Error from inflateInit2: %s", stream->msg?stream->msg:""); -- cgit v1.2.3