From cd42cb8df066ffd4449af6de168190669dad4453 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Fri, 5 Jan 2007 23:56:53 +0000 Subject: do not expose internal state of [g]zip unpacker. fix memory leak in inflate_gunzip. --- archival/unzip.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'archival/unzip.c') diff --git a/archival/unzip.c b/archival/unzip.c index 34a3a8519..b10132ebd 100644 --- a/archival/unzip.c +++ b/archival/unzip.c @@ -76,16 +76,16 @@ static int unzip_extract(zip_header_t *zip_header, int src_fd, int dst_fd) bb_copyfd_exact_size(src_fd, dst_fd, size); } else { /* Method 8 - inflate */ - inflate_init(zip_header->formatted.cmpsize); - inflate_unzip(src_fd, dst_fd); - inflate_cleanup(); + inflate_unzip_result res; + /* err = */ inflate_unzip(&res, zip_header->formatted.cmpsize, src_fd, dst_fd); +// we should check for -1 error return /* Validate decompression - crc */ - if (zip_header->formatted.crc32 != (gunzip_crc ^ 0xffffffffL)) { + if (zip_header->formatted.crc32 != (res.crc ^ 0xffffffffL)) { bb_error_msg("invalid compressed data--%s error", "crc"); return 1; } /* Validate decompression - size */ - if (zip_header->formatted.ucmpsize != gunzip_bytes_out) { + if (zip_header->formatted.ucmpsize != res.bytes_out) { bb_error_msg("invalid compressed data--%s error", "length"); return 1; } -- cgit v1.2.3