libxc: Fix memory leak in zlib usage
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 10 Dec 2008 13:14:13 +0000 (13:14 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 10 Dec 2008 13:14:13 +0000 (13:14 +0000)
Any call to inflate() must be followed by inflateEnd(), otherwise the
internal zlib state is leaked.

Signed-off-by: Kevin Wolf <kwolf@suse.de>
tools/libxc/xc_dom_core.c
tools/libxc/xg_private.c

index 2b6f6b68682001229888866e0679cda756b18fb5..b1e90d8d6e9e458e7837aee6be9cf2663d68c600 100644 (file)
@@ -244,6 +244,7 @@ int xc_dom_do_gunzip(void *src, size_t srclen, void *dst, size_t dstlen)
         return -1;
     }
     rc = inflate(&zStream, Z_FINISH);
+    inflateEnd(&zStream);
     if ( rc != Z_STREAM_END )
     {
         xc_dom_panic(XC_INTERNAL_ERROR,
index d7620933cdda3f428e1b23b380b111a28211af4e..544d089cdfbc1a433855630f0c4e3156d398454a 100644 (file)
@@ -131,6 +131,7 @@ char *xc_inflate_buffer(const char *in_buf, unsigned long in_size,
 
     /* Inflate in one pass/call */
     sts = inflate(&zStream, Z_FINISH);
+    inflateEnd(&zStream);
     if ( sts != Z_STREAM_END )
     {
         ERROR("inflate failed, sts %d\n", sts);