render / rpms / libvirt

Forked from rpms/libvirt 9 months ago
Clone
Blob Blame History Raw
From 4e7a676e72a6c29440fba9ef7942a0e615cd8707 Mon Sep 17 00:00:00 2001
Message-Id: <4e7a676e72a6c29440fba9ef7942a0e615cd8707.1377873640.git.jdenemar@redhat.com>
From: Peter Krempa <pkrempa@redhat.com>
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