[PATCH v3 11/33] libctf: fix memory leak on ctf_compress_write error path

Nick Alcock nick.alcock@oracle.com
Fri Sep 6 23:18:00 GMT 2019


On 7 Sep 2019, Hans-Peter Nilsson verbalised:

> On Fri, 6 Sep 2019, Nick Alcock wrote:
>
>> We were failing to free the compressed-data buffer if compression
>> failed.
>>
>> libctf/
>> 	* ctf-create.c (ctf_compress_write): Fix leak.
>
> Aren't you removing a call to free in this patch, thus actually
> *introducing* a leak, considering that ctf_free is just a
> wrapper for free?

That had me scratching my head for a moment -- but it's the commit
message (and changelog text) that's wrong. It should be something like

    write: avoid double-free on compression error path

>> ---
>>  libctf/ctf-create.c | 1 -
>>  1 file changed, 1 deletion(-)
>>
>> diff --git a/libctf/ctf-create.c b/libctf/ctf-create.c
>> index 6189042fdb0..76304f724c7 100644
>> --- a/libctf/ctf-create.c
>> +++ b/libctf/ctf-create.c
>> @@ -1997,7 +1997,6 @@ ctf_compress_write (ctf_file_t *fp, int fd)
>>      {
>>        ctf_dprintf ("zlib deflate err: %s\n", zError (rc));
>>        err = ctf_set_errno (fp, ECTF_COMPRESS);
>> -      ctf_free (buf);
>>        goto ret;
>>      }

This is correct: we free the buffer here:

> ret:
>   ctf_free (buf);
>   return err;
> }

Fixed locally. Thank you!



More information about the Binutils mailing list