
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