From 4e7a676e72a6c29440fba9ef7942a0e615cd8707 Mon Sep 17 00:00:00 2001 Message-Id: <4e7a676e72a6c29440fba9ef7942a0e615cd8707.1377873640.git.jdenemar@redhat.com> From: Peter Krempa Date: Fri, 16 Aug 2013 15:31:00 +0200 Subject: [PATCH] virbitmaptest: Add test for out of bounds condition https://bugzilla.redhat.com/show_bug.cgi?id=997906 Previous patch fixed an issue where, when parsing a bitmap from the string, the bounds of the bitmap weren't checked. That flaw resulted into crashes. This test tests that case to avoid it in the future. (cherry picked from commit 7efd5fd1b0225436cbbae1181ab41c2d3eca43f9) --- tests/virbitmaptest.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c index 8cfd8b5..c56d6fa 100644 --- a/tests/virbitmaptest.c +++ b/tests/virbitmaptest.c @@ -464,6 +464,38 @@ cleanup: return ret; } + +/* test out of bounds conditions on virBitmapParse */ +static int +test9(const void *opaque ATTRIBUTE_UNUSED) +{ + int ret = -1; + virBitmapPtr bitmap; + + if (virBitmapParse("100000000", 0, &bitmap, 20) != -1) + goto cleanup; + + if (bitmap) + goto cleanup; + + if (virBitmapParse("1-1000000000", 0, &bitmap, 20) != -1) + goto cleanup; + + if (bitmap) + goto cleanup; + + if (virBitmapParse("1-10^10000000000", 0, &bitmap, 20) != -1) + goto cleanup; + + if (bitmap) + goto cleanup; + + ret = 0; +cleanup: + return ret; + +} + static int mymain(void) { @@ -485,6 +517,8 @@ mymain(void) ret = -1; if (virtTestRun("test8", 1, test8, NULL) < 0) ret = -1; + if (virtTestRun("test9", 1, test9, NULL) < 0) + ret = -1; return ret; } -- 1.8.3.2