[libvirt] [PATCH v3 01/11] Add QMP probing for TPM
Stefan Berger
stefanb at linux.vnet.ibm.com
Mon Apr 1 19:52:45 UTC 2013
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;
>> + }
>> +
>> + if ((n = virJSONValueArraySize(data)) < 0) {
>> + virReportError(VIR_ERR_INTERNAL_ERROR,
>> + _("%s reply data was not an array"),
>> + qmpCmd);
>> + goto cleanup;
>> + }
>> +
>> + /* null-terminated list */
>> + if (VIR_ALLOC_N(list, n + 1) < 0) {
>> + virReportOOMError();
>> + goto cleanup;
>> + }
>> +
>> + for (i = 0 ; i < n ; i++) {
>> + virJSONValuePtr child = virJSONValueArrayGet(data, i);
>> + const char *tmp;
>> +
>> + if (!(tmp = virJSONValueGetString(child))) {
>> + virReportError(VIR_ERR_INTERNAL_ERROR,
>> + _("%s array element does not contain data"),
>> + qmpCmd);
>> + goto cleanup;
>> + }
>> +
>> + if (!(list[i] = strdup(tmp))) {
>> + virReportOOMError();
>> + goto cleanup;
>> + }
>> + }
>> +
>> + ret = n;
>> + *array = list;
>> +
>> +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.
Stefan
More information about the libvir-list
mailing list