[libvirt] [PATCHv2] virBitmap: Place virBitmapIsAllClear check after virBitmapParse calls

Erik Skultety eskultet at redhat.com
Thu Apr 16 11:40:40 UTC 2015



On 04/14/2015 12:27 PM, John Ferlan wrote:
> 
> 
> On 04/13/2015 08:01 AM, Erik Skultety wrote:
>> This patch adds checks for empty bitmaps right after the calls of
>> virBitmapParse. These only include spots where set API's are called and
>> where domain's XML is parsed.
>> Also, it partially reverts commit 983f5a which added a check for
>> invalid nodeset "0,^0" into virBitmapParse function. This change broke
>> the logic, as an empty bitmap should not cause an error.
>>
>> https://bugzilla.redhat.com/show_bug.cgi?id=1210545
>> ---
>>  src/conf/domain_conf.c   | 35 +++++++++++++++++++++++++++++++----
>>  src/conf/numa_conf.c     | 23 +++++++++++++++++++----
>>  src/qemu/qemu_driver.c   |  5 +++--
>>  src/util/virbitmap.c     |  3 ---
>>  src/xenconfig/xen_sxpr.c |  7 +++++++
>>  tests/virbitmaptest.c    | 13 ++++++++++---
>>  6 files changed, 70 insertions(+), 16 deletions(-)
>>
> 
> ...
> 
>> diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c
>> index f247275..9a84e4c 100644
>> --- a/tests/virbitmaptest.c
>> +++ b/tests/virbitmaptest.c
>> @@ -524,16 +524,23 @@ static int
>>  test10(const void *opaque ATTRIBUTE_UNUSED)
>>  {
>>      int ret = -1;
>> -    virBitmapPtr b1 = NULL, b2 = NULL, b3 = NULL;
>> +    virBitmapPtr b1 = NULL, b2 = NULL, b3 = NULL, b4 = NULL;
>>  
>>      if (virBitmapParse("0-3,5-8,11-15", 0, &b1, 20) < 0 ||
>>          virBitmapParse("4,9,10,16-19", 0, &b2, 20) < 0 ||
>> -        virBitmapParse("15", 0, &b3, 20) < 0)
>> +        virBitmapParse("15", 0, &b3, 20) < 0 ||
>> +        virBitmapParse("0,^0", 0, &b4, 20) < 0)
>> +        goto cleanup;
>> +
>> +    if (!virBitmapIsAllClear(b4))
>>          goto cleanup;
>>  
>>      if (virBitmapOverlaps(b1, b2) ||
>> +        virBitmapOverlaps(b1, b4) ||
>>          virBitmapOverlaps(b2, b3) ||
>> -        !virBitmapOverlaps(b1, b3))
>> +        virBitmapOverlaps(b2, b4) ||
>> +        !virBitmapOverlaps(b1, b3) ||
>> +        virBitmapOverlaps(b3, b4))
>>          goto cleanup;
>>  
>>      ret = 0;
>>
> 
> My Coverity checker was unhappy today because 'b4' is never
> virBitmapFree()'d
> 
> 
> John
> 
Oops, thanks for pushing the fix.
Erik




More information about the libvir-list mailing list