memory leak in inflate.c

Marco Molteni molter at tin.it
Mon Mar 14 12:45:03 PST 2005


On Mon, 14 Mar 2005 <Vijay.Singh at nokia.com> wrote:

> Hi, I am trying to debug a memory leak in executing gzipped binaries
> when the parameter list is too long. The function in question is
> inflate_dynamic(). 
> 
>         /* decompress until an end-of-block code */
>         if (inflate_codes(glbl, tl, td, bl, bd))
>                 return 1;
> 
>         /* free the decoding tables, return */
>         huft_free(glbl, tl);
>         huft_free(glbl, td);
>         return 0;
> 
> 
> Should this be re-written as:
> 
>         	i = inflate_codes(glbl, tl, td, bl, bd) ? 1 : 0;
>         
>         	/* free the decoding tables, return */
>         	huft_free(glbl, tl);
>         	huft_free(glbl, td);
> 
> 	return (i);
> 
> so that the Huffman tables are always freed.

_If_ I remember correctly, if inflate_dynamic() returns a non-zero
code it means that the decompression failed and the program itself
quits right away, no memory leak. Or am I missing something?

marco
-- 
Very graphic, classical but efficient.


More information about the freebsd-hackers mailing list