]> granicus.if.org Git - libexpat/commitdiff
Test XML_SetBase against failing memory allocations
authorRhodri James <rhodri@kynesim.co.uk>
Fri, 3 Feb 2017 18:37:42 +0000 (18:37 +0000)
committerSebastian Pipping <sebastian@pipping.org>
Sat, 18 Feb 2017 19:45:30 +0000 (20:45 +0100)
expat/tests/runtests.c

index c59470214d57496c0b92a00085901e69a81d18a9..8de05402607761a7b5ba8459486338c0670792dd 100644 (file)
@@ -2571,6 +2571,24 @@ START_TEST(test_alloc_explicit_encoding)
 }
 END_TEST
 
+/* Test robustness of XML_SetBase against a failing allocator */
+START_TEST(test_alloc_set_base)
+{
+    const XML_Char *new_base = "/local/file/name.xml";
+    int i;
+
+    for (i = 0; i < 5; i++) {
+        allocation_count = i;
+        if (XML_SetBase(parser, new_base) == XML_STATUS_OK)
+            break;
+    }
+    if (i == 0)
+        fail("Base set despite failing allocator");
+    else if (i == 5)
+        fail("Base not set with allocation count 5");
+}
+END_TEST
+
 
 static Suite *
 make_suite(void)
@@ -2673,6 +2691,7 @@ make_suite(void)
     tcase_add_test(tc_alloc, test_alloc_internal_entity);
     tcase_add_test(tc_alloc, test_alloc_dtd_default_handling);
     tcase_add_test(tc_alloc, test_alloc_explicit_encoding);
+    tcase_add_test(tc_alloc, test_alloc_set_base);
 
     return s;
 }