|
@@ -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:"<no message>");
|