]> xenbits.xensource.com Git - libvirt.git/commitdiff
virbitmaptest: Add test for out of bounds condition
authorPeter Krempa <pkrempa@redhat.com>
Fri, 16 Aug 2013 10:13:27 +0000 (12:13 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 16 Aug 2013 12:39:16 +0000 (14:39 +0200)
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.

tests/virbitmaptest.c

index 8cfd8b5b64dbdfe144e7a6e3c61b9650d615a5fb..c56d6fa284921273bfe16559256ee1fd73e81c18 100644 (file)
@@ -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;
 }