On 04/01/2013 01:52 PM, Stefan Berger wrote:
> On 04/01/2013 03:45 PM, Corey Bryant wrote:
>>> +    if (ret < 0)
>>> +        goto cleanup;
>>> +
>>> +    ret = -1;
>>> +
>>> +    if (!(data = virJSONValueObjectGet(reply, "return"))) {
>>> +        virReportError(VIR_ERR_INTERNAL_ERROR,
>>> +                       _("%s reply was missing return data"),
>>> +                       qmpCmd);
>>> +        goto cleanup;
>>> +    }
>>> +

>>> +cleanup:
>>> +    if (ret < 0)
>>> +        virStringFreeList(list);
>>> +    virJSONValueFree(cmd);
>>> +    virJSONValueFree(reply);
>> +
>>
>> Does data need to be freed?
>>
> 
> It doesn't seem to be the case for the 'return' object. No other code
> frees it, either.

data is a pointer to contents already within reply; freeing reply is
recursive, and explicitly freeing data in addition to reply would be a
double-free bug.  This aspect of the code is correct as written.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to