[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