]> granicus.if.org Git - libexpat/commitdiff
Test document name of "1+" is rejected in doctype
authorRhodri James <rhodri@kynesim.co.uk>
Fri, 16 Jun 2017 16:34:18 +0000 (17:34 +0100)
committerSebastian Pipping <sebastian@pipping.org>
Sat, 22 Jul 2017 20:49:20 +0000 (22:49 +0200)
Following a codepath that requires a character valid in a name but
not at the start (or '-' or ':') followed by a '+'

expat/tests/runtests.c

index 8d1ceaca63148a1c6a56de7a39c4cc75f83c5fa8..19850274b654726da3e69db2bd8c368cfc1c6955 100644 (file)
@@ -6277,6 +6277,17 @@ START_TEST(test_bad_doctype_utf16)
 }
 END_TEST
 
+START_TEST(test_bad_doctype_plus)
+{
+    const char *text =
+        "<!DOCTYPE 1+ [ <!ENTITY foo 'bar'> ]>\n"
+        "<1+>&foo;</1+>";
+
+    expect_failure(text, XML_ERROR_INVALID_TOKEN,
+                   "'+' in document name not faulted");
+}
+END_TEST
+
 /*
  * Namespaces tests.
  */
@@ -11744,6 +11755,7 @@ make_suite(void)
     tcase_add_test(tc_basic, test_bad_attr_desc_keyword_utf16);
     tcase_add_test(tc_basic, test_bad_doctype);
     tcase_add_test(tc_basic, test_bad_doctype_utf16);
+    tcase_add_test(tc_basic, test_bad_doctype_plus);
 
     suite_add_tcase(s, tc_namespace);
     tcase_add_checked_fixture(tc_namespace,