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