]> granicus.if.org Git - libexpat/commitdiff
Test entities with similar names to predefined entity are rejected
authorRhodri James <rhodri@kynesim.co.uk>
Mon, 19 Jun 2017 13:19:59 +0000 (14:19 +0100)
committerSebastian Pipping <sebastian@pipping.org>
Sat, 22 Jul 2017 20:49:20 +0000 (22:49 +0200)
expat/tests/runtests.c

index 09fa9f48f0a5d4001ba1c2eba57fadbfa3fa0bcd..d6040a98c7d3d4dbc4fcb341068cf95070fa293a 100644 (file)
@@ -4145,6 +4145,27 @@ START_TEST(test_invalid_tag_in_dtd)
 }
 END_TEST
 
+/* Test entities not quite the predefined ones are not mis-recognised */
+START_TEST(test_not_predefined_entities)
+{
+    const char *text[] = {
+        "<doc>&pt;</doc>",
+        "<doc>&amo;</doc>",
+        "<doc>&quid;</doc>",
+        "<doc>&apod;</doc>",
+        NULL
+    };
+    int i = 0;
+
+    while (text[i] != NULL) {
+        expect_failure(text[i], XML_ERROR_UNDEFINED_ENTITY,
+                       "Undefined entity not rejected");
+        XML_ParserReset(parser, NULL);
+        i++;
+    }
+}
+END_TEST
+
 /* Test conditional inclusion (IGNORE) */
 static int XMLCALL
 external_entity_load_ignore(XML_Parser parser,
@@ -11798,6 +11819,7 @@ make_suite(void)
     tcase_add_test(tc_basic, test_byte_info_at_cdata);
     tcase_add_test(tc_basic, test_predefined_entities);
     tcase_add_test(tc_basic, test_invalid_tag_in_dtd);
+    tcase_add_test(tc_basic, test_not_predefined_entities);
     tcase_add_test(tc_basic, test_ignore_section);
     tcase_add_test(tc_basic, test_ignore_section_utf16);
     tcase_add_test(tc_basic, test_bad_ignore_section);