]> granicus.if.org Git - libexpat/commitdiff
Test XML_SetEncoding against memory allocation failures
authorRhodri James <rhodri@kynesim.co.uk>
Fri, 3 Feb 2017 18:19:56 +0000 (18:19 +0000)
committerSebastian Pipping <sebastian@pipping.org>
Sat, 18 Feb 2017 19:44:08 +0000 (20:44 +0100)
expat/tests/runtests.c

index ee94873ea2c3b4ad70a8ceffcc438940e44ca832..c59470214d57496c0b92a00085901e69a81d18a9 100644 (file)
@@ -2554,6 +2554,23 @@ START_TEST(test_alloc_dtd_default_handling)
 }
 END_TEST
 
+/* Test robustness of XML_SetEncoding() with a failing allocator */
+START_TEST(test_alloc_explicit_encoding)
+{
+    int i;
+
+    for (i = 0; i < 5; i++) {
+        allocation_count = i;
+        if (XML_SetEncoding(parser, "us-ascii") == XML_STATUS_OK)
+            break;
+    }
+    if (i == 0)
+        fail("Encoding set despite failing allocator");
+    else if (i == 5)
+        fail("Encoding not set at allocation count 5");
+}
+END_TEST
+
 
 static Suite *
 make_suite(void)
@@ -2655,6 +2672,7 @@ make_suite(void)
     tcase_add_test(tc_alloc, test_alloc_external_entity);
     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);
 
     return s;
 }