[libvirt] [PATCH] Resolve memory leak found by valgrind

Osier Yang jyang at redhat.com
Fri May 31 14:11:03 UTC 2013


On 31/05/13 21:59, Osier Yang wrote:
> On 31/05/13 21:54, John Ferlan wrote:
>> Commit '6afdfc8e' adjusted the exit and error paths to go through the 
>> error
>> and cleanup labels, but neglected to remove the return ret prior to 
>> cleanup.
>> Also noted the 'type' xml string fetch was never checked for NULL which
>> could lead to some interesting results.
>> ---
>>   src/conf/storage_conf.c | 8 ++++++--
>>   1 file changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
>> index f0ea41d..94eb69a 100644
>> --- a/src/conf/storage_conf.c
>> +++ b/src/conf/storage_conf.c
>> @@ -834,6 +834,12 @@ virStoragePoolDefParseXML(xmlXPathContextPtr ctxt)
>>       }
>>         type = virXPathString("string(./@type)", ctxt);
>> +    if (type == NULL) {
>> +        virReportError(VIR_ERR_XML_ERROR,
>> +                       _("storage pool missing type attribute"));
>> +        goto error;
>> +    }
>> +
>>       if ((ret->type = virStoragePoolTypeFromString(type)) < 0) {
>>           virReportError(VIR_ERR_XML_ERROR,
>>                          _("unknown storage pool type %s"), type);
>> @@ -956,8 +962,6 @@ virStoragePoolDefParseXML(xmlXPathContextPtr ctxt)
>>               goto error;
>>       }
>>   -    return ret;
>> -
>
> ret needs to be set as "0" here.
>
> ret = 0;

Pointed out by Peter. I made a fast/stupid mistake, the function 
actually returns
a pointer. So it's okay here. Worth to have in 1.0.6.

>>   cleanup:
>>       VIR_FREE(uuid);
>>       VIR_FREE(type);
> ACK with that.
>
> -- 
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list




More information about the libvir-list mailing list