54#if ! defined(__cplusplus)
74 fail(
"Parser not created.");
82 char text[] =
"<doc>\0</doc>";
87 fail(
"Parser did not report error on NUL-byte.");
96 "Parser did not report error on NUL-byte.");
102 fail(
"SipHash self-test failed");
108 const char message[] =
"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09"
109 "\x0a\x0b\x0c\x0d\x0e";
115 sip_tokey(&
key,
"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09"
116 "\x0a\x0b\x0c\x0d\x0e\x0f");
127 fail(
"sip24_final failed spec test\n");
131 fail(
"siphash24 failed spec test\n");
137 const char *
text =
"\357\273\277<e/>";
146 char text[] =
"\376\377\0<\0e\0/\0>";
155 char text[] =
"\377\376<\0e\0/\0>\0";
164 char text[] =
" \0<\0e\0/\0>\0";
187#define COLLIDING_HASH_SALT (unsigned long)SIP_ULL(0xffffffffU, 0xff99fc90U)
190 "<a1/><a2/><a3/><a4/><a5/><a6/><a7/><a8/>\n"
191 "<b1></b1><b2 attr='foo'>This is a foo</b2><b3></b3><b4></b4>\n"
192 "<b5></b5><b6></b6><b7></b7><b8></b8>\n"
193 "<c1/><c2/><c3/><c4/><c5/><c6/><c7/><c8/>\n"
194 "<d1/><d2/><d3/><d4/><d5/><d6/><d7/>\n"
195 "<d8>This triggers the table growth and collides with b2</d8>\n"
204#undef COLLIDING_HASH_SALT
208 const char *
text =
"<?xml version='1.0' encoding='iso-8859-1'?>\n"
209 "<e>J\xF8rgen \xE6\xF8\xE5\xC6\xD8\xC5</e>";
212 =
XCS(
"J\x00f8rgen \x00e6\x00f8\x00e5\x00c6\x00d8\x00c5");
215 =
XCS(
"J\xC3\xB8rgen \xC3\xA6\xC3\xB8\xC3\xA5\xC3\x86\xC3\x98\xC3\x85");
223 const char *
text =
"<?xml version='1.0' encoding='iso-8859-1'?>\n"
224 "<doc>éèàçêÈ</doc>";
226 const XML_Char *expected =
XCS(
"\x00e9\x00e8\x00e0\x00e7\x00ea\x00c8");
229 =
XCS(
"\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88");
236 const char *
text =
"<?xml version='1.0' encoding='iso-8859-1'?>\n"
237 "<doc>éèàçêÈ</doc>";
239 const XML_Char *expected =
XCS(
"\x00e9\x00e8\x00e0\x00e7\x00ea\x00c8");
242 =
XCS(
"\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88");
249 const char *
text =
"<?xml version='1.0' encoding='iso-8859-1'?>\n"
250 "<doc>\xE9\xE8\xE0\xE7\xEa\xC8</doc>";
252 const XML_Char *expected =
XCS(
"\x00e9\x00e8\x00e0\x00e7\x00ea\x00c8");
255 =
XCS(
"\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88");
262 const char *
text =
"<?xml version='1.0' encoding='utf-8'?>\n"
263 "<doc>\xC3\xA9</doc>";
279 const char *
text =
"<doc>\xEF\xBA\xBF</doc>";
298 for (
i = 128;
i <= 255; ++
i) {
303 "expected token error for '%c' (ordinal %d) in UTF-8 text",
i,
315#define UTF8_LEAD_1 "\x7f"
316#define UTF8_LEAD_2 "\xdf"
317#define UTF8_LEAD_3 "\xef"
318#define UTF8_LEAD_4 "\xf7"
319#define UTF8_FOLLOW "\xbf"
358 printf(
"[-] UTF-8 case %2u: Expected movement by %2d chars"
359 ", actually moved by %2d chars: \"",
370 fail(
"UTF-8 auto-alignment is not bullet-proof\n");
382 =
"\000<\000?\000x\000m\000\154\000 \000v\000e\000r\000s\000i\000o"
383 "\000n\000=\000'\0001\000.\000\060\000'\000 \000e\000n\000c\000o"
384 "\000d\000i\000n\000g\000=\000'\000U\000T\000F\000-\0001\000\066"
385 "\000'\000?\000>\000\n"
386 "\000<\000d\000o\000c\000 \000a\000=\000'\0001\0002\0003\000'\000>"
387 "\000s\000o\000m\000e\000 \xff\x21\000 \000t\000e\000x\000t\000"
388 "<\000/\000d\000o\000c\000>";
390 const XML_Char *expected =
XCS(
"some \xff21 text");
392 const XML_Char *expected =
XCS(
"some \357\274\241 text");
408 char text[] =
"\xFF\xFE"
409 "<\000e\000/\000>\000"
410 "\r\000\n\000\r\000\n\000";
413 fail(
"bad value of first_chunk_bytes");
430 const char *
text =
"<?xml version='1.0' encoding='utf-16'?>"
436 "UTF-16 declared in UTF-8 not faulted");
442 const char *
text =
"<doc>Hi</doc>";
445 fail(
"XML_SetEncoding failed");
447 "Unknown encoding not faulted");
454 =
"<?xml version='1.0' encoding='iso-8859-1'?>\n"
455 "<e a='\xE4 \xF6 \xFC ä ö ü ä ö ü >'\n"
456 " >\xE4 \xF6 \xFC ä ö ü ä ö ü ></e>";
459 const XML_Char *expected =
XCS(
"\x00e4 \x00f6 \x00fc ")
460 XCS(
"\x00e4 \x00f6 \x00fc ")
XCS(
"\x00e4 \x00f6 \x00fc >");
463 const XML_Char *expected =
XCS(
"\xC3\xA4 \xC3\xB6 \xC3\xBC ")
464 XCS(
"\xC3\xA4 \xC3\xB6 \xC3\xBC ")
XCS(
"\xC3\xA4 \xC3\xB6 \xC3\xBC >");
483 =
"<?xml version='1.0' encoding='utf-8'?>\n"
485 "<do\xf0\x90\x80\x80/>";
487 "4-byte UTF-8 character in element name not faulted");
496 =
"<?xml version='1.0' encoding='iso-8859-1'?>\n"
499 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
500 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
501 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
502 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
503 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
504 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
505 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
506 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
507 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
508 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
509 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
510 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
511 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
512 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
513 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
514 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNO"
521 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
522 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
523 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
524 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
525 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
526 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
527 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
528 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
529 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
530 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
531 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
532 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
533 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
534 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
535 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
536 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNO")
553 =
"<?xml version='1.0' encoding='us-ascii'?>\n"
556 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
557 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
558 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
559 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
560 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
561 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
562 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
563 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
564 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
565 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
566 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
567 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
568 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
569 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
570 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
571 "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"
576 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
577 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
578 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
579 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
580 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
581 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
582 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
583 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
584 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
585 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
586 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
587 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
588 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
589 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
590 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
591 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
601 const char *
text =
"<tag>\n"
621 const char *
text =
"<tag></tag>";
639 const char *
text =
"<a>\n"
671 const char *
text =
"<a>\n"
677 fail(
"Expected a parse error");
691 const char *
text =
"<a>\n"
697 fail(
"Expected a parse error");
719 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
721 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
722 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
723 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
724 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
725 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
726 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
727 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
728 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
729 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
730 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
731 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
732 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
733 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
734 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
735 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
736 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
752 =
"<?xml version='1.0' encoding='iso-8859-1'?>"
755 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
757 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
758 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
759 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
760 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
761 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
762 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
763 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
764 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
765 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
766 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
767 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
768 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
769 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
770 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
771 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
772 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
774 int parse_len = (
int)strlen(
text);
780 fail(
"Could not allocate parse buffer");
793 const char *
text =
"<a><b><c/></b><d><f/></d></a>";
827 else if (*
s ==
XCS(
'\t') || *
s ==
XCS(
'\n') || *
s ==
XCS(
'\r'))
876 for (
i = 0; atts[
i] !=
NULL;
i += 2) {
896 =
"<!DOCTYPE doc [\n"
898 " attr NMTOKENS #REQUIRED\n"
899 " ents ENTITIES #REQUIRED\n"
900 " refs IDREFS #REQUIRED>\n"
902 "<doc attr=' a b c\t\td\te\t' refs=' id-1 \t id-2\t\t' \n"
903 " ents=' ent-1 \t\r\n"
923 "<?xml version='1.0'?>\n"
926 "failed to report misplaced XML declaration");
932 "Failed to report invalid XML declaration");
938 "Failed to report missing XML declaration attribute");
943 expect_failure(
"<?xml version='1.0' encoding='us-ascii' standalone?>\n"
946 "Failed to report missing attribute value");
952 const char *
text =
"<?xml version='1.0' encoding='unsupported-encoding'?>\n"
953 "<!DOCTYPE test [<!ENTITY foo 'bar'>]>\n"
965 const char *
text =
"<?xml version='1.0' encoding='unsupported-encoding'?>\n"
966 "<!DOCTYPE test [<!ENTITY foo 'bar'>]>\n"
972 fail(
"Unrecognised encoding not rejected");
978 const char *
text =
"<!DOCTYPE doc [\n"
979 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
986 "<?xml encoding='iso-8859-3'?>\xC3\xA9",
XCS(
"utf-8"),
NULL};
1000 const char *
text =
"<!DOCTYPE doc [\n"
1001 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
1012 const char *
text =
"<!DOCTYPE doc [\n"
1013 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
1017 "<?xml encoding='iso-8859-3'?>"
1033 const char *
text =
"<!DOCTYPE doc [\n"
1034 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
1038 = {
"<?xml encoding='iso-8859-3'?>u",
"Unsupported encoding not faulted",
1044 "Bad encoding should not have been accepted");
1050 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
1051 "<!DOCTYPE doc SYSTEM 'foo'>\n"
1052 "<doc>&entity;</doc>";
1054 = {
"<!ELEMENT doc (#PCDATA)*>",
"Unknown encoding not faulted",
1061 "Bad encoding not faulted in external entity handler");
1069 const char *
text =
"<!DOCTYPE doc SYSTEM 'foo'>\n"
1070 "<doc>&entity;</doc>";
1083 "Parser did not report undefined entity w/out a DTD.");
1092 =
"<?xml version='1.0' encoding='us-ascii' standalone='yes'?>\n"
1093 "<!DOCTYPE doc SYSTEM 'foo'>\n"
1094 "<doc>&entity;</doc>";
1097 "Parser did not report undefined entity (standalone).");
1106 =
"<?xml version='1.0' encoding='us-ascii' standalone='yes'?>\n"
1107 "<!DOCTYPE doc SYSTEM 'foo'>\n"
1108 "<doc>&entity;</doc>";
1115 "Parser did not report undefined entity (external DTD).");
1124 =
"<?xml version='1.0' encoding='us-ascii' standalone='yes'?>\n"
1125 "<!DOCTYPE doc SYSTEM 'foo'>\n"
1126 "<doc>&entity;</doc>";
1134 "Parser did not report undefined entity");
1142 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
1143 "<!DOCTYPE doc SYSTEM 'foo'>\n"
1144 "<doc>&entity;</doc>";
1155 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
1156 "<!DOCTYPE doc SYSTEM 'foo'>\n"
1157 "<doc>&entity;</doc>";
1165 "NotStandalone handler failed to reject");
1171 "NotStandalone handler failed to reject");
1177 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
1178 "<!DOCTYPE doc SYSTEM 'foo'>\n"
1179 "<doc>&entity;</doc>";
1195 const char *
text =
"<!DOCTYPE doc [\n"
1196 " <!ENTITY entity '&entity;'>\n"
1198 "<doc>&entity;</doc>";
1201 "Parser did not report recursive entity reference.");
1213 {
"<!ENTITY % p1 '%p1;'>"
1214 "<!ENTITY % p1 'first declaration wins'>",
1216 {
"<!ENTITY % p1 'first declaration wins'>"
1217 "<!ENTITY % p1 '%p1;'>",
1222 for (
size_t i = 0;
i <
sizeof(
cases) /
sizeof(
cases[0]);
i++) {
1223 const char *
const doc =
cases[
i].doc;
1250 const char *
text =
"<!DOCTYPE doc [\n"
1251 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
1255 = {{
"<",
"Incomplete element declaration not faulted",
NULL,
1259 {
"<tag>\xe2\x82",
"Incomplete character in CDATA not faulted",
NULL,
1270 "Parser did not report external entity error");
1278 const char *
text =
"<!DOCTYPE doc [\n"
1279 "<!ENTITY e SYSTEM 'http://example.org/e'>\n"
1280 "<!NOTATION n SYSTEM 'http://example.org/n'>\n"
1281 "<!ELEMENT doc EMPTY>\n"
1282 "<!ATTLIST doc a CDATA #IMPLIED>\n"
1284 "<!--comment in dtd-->\n"
1304 const char *
prolog =
"<!DOCTYPE doc [\n"
1305 "<!ELEMENT doc EMPTY>\n";
1307 = {{
"<!ATTLIST doc a ( one | two | three ) #REQUIRED>\n"
1311 XCS(
"(one|two|three)"),
1313 {
"<!NOTATION foo SYSTEM 'http://example.org/foo'>\n"
1314 "<!ATTLIST doc a NOTATION (foo) #IMPLIED>\n"
1318 {
"<!ATTLIST doc a NOTATION (foo) 'bar'>\n"
1322 {
"<!ATTLIST doc a CDATA '\xdb\xb2'>\n"
1359 const char *
text =
"<doc xmlns:prefix='http://example.org/'>\n"
1360 " <e xmlns:prefix=''/>\n"
1374 const char *
text =
"<!DOCTYPE e:element [\n"
1375 " <!ATTLIST e:element\n"
1376 " xmlns:e CDATA 'http://example.org/'>\n"
1428 fail(
"Attempt to continue parse while suspended not faulted");
1430 fail(
"Suspended parse not faulted with correct error");
1443 fail(
"Failed to double-stop parser");
1451 fail(
"Failed to double-suspend parser");
1459 fail(
"Failed to suspend-abort parser");
1464 const char *
text =
"<a><![CDATA[<greeting>Hello, world!</greeting>]]></a>";
1465 const XML_Char *expected =
XCS(
"<greeting>Hello, world!</greeting>");
1500 =
"\0<\0?\0x\0m\0l\0"
1501 " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0"
1502 " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0"
1506 "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0[\0h\0e\0l\0l\0o\0]\0]\0>\0<\0/\0a\0>";
1528 " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0"
1529 " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0"
1533 "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0[\0h\0e\0l\0l\0o\0]\0]\0>\0<\0/\0a\0>\0";
1551#define A_TO_P_IN_UTF16 "\0A\0B\0C\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0N\0O\0P"
1561 =
"\0<\0?\0x\0m\0l\0 "
1562 "\0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0 "
1563 "\0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0\x31\0\x36\0'\0?\0>"
1564 "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0["
1585 "\0]\0]\0>\0<\0/\0a\0>";
1588 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1589 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1590 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1591 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1592 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1593 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1594 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1595 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1596 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1597 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1598 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1599 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1600 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1601 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1602 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1603 XCS(
"ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")
1604 XCS(
"ABCDEFGHIJKLMNOP");
1614 fail(
"Could not allocate parse buffer");
1636 const char text[] =
"\0<\0?\0x\0m\0l\0"
1637 " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0"
1638 " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0"
1642 "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0["
1643 "\xd8\x34\xdd\x5e\xd8\x34\xdd\x5f"
1644 "\0]\0]\0>\0<\0/\0a\0>";
1646 const XML_Char *expected =
XCS(
"\xd834\xdd5e\xd834\xdd5f");
1648 const XML_Char *expected =
XCS(
"\xf0\x9d\x85\x9e\xf0\x9d\x85\x9f");
1673 const char text[] =
"\0<\0?\0x\0m\0l\0"
1674 " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0"
1675 " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0"
1679 "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0["
1681 "\0]\0]\0>\0<\0/\0a\0>";
1685 fail(
"Reversed UTF-16 surrogate pair not faulted");
1735 "Expected error %d but got error %d for case %u: \"%s\"\n",
1754 const char prolog[] =
"\0<\0?\0x\0m\0l\0"
1755 " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0"
1756 " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0"
1783 {21,
"\0<\0!\0[\0C\0D\0A\0T\0A\0[\0Z\xd8",
1786 {23,
"\0<\0!\0[\0C\0D\0A\0T\0A\0[\0Z\xd8\x34\xdd",
1788 {24,
"\0<\0!\0[\0C\0D\0A\0T\0A\0[\0Z\xd8\x34\xdd\x5e",
1842 fail(
"Parse not suspended in CDATA handler");
1855 fail(
"Allocation failed");
1864 fail(
"Memory not writable");
1868 fail(
"Reallocation failed");
1874 fail(
"Reallocated memory not writable");
1885 const char *
text =
"<doc>hell]</doc>";
1887 "<!ENTITY entity '%'>\n"
1889 "<doc>&entity;</doc>";
2097 const char *
text =
"<!DOCTYPE doc [\n"
2098 "<!ELEMENT doc (chapter)>\n"
2099 "<!ELEMENT chapter (#PCDATA)>\n"
2101 "<doc><chapter>Wombats are go</chapter></doc>";
2127 if (model !=
NULL) {
2172 const char *
text =
"<!DOCTYPE foo [\n"
2173 "<!ELEMENT junk ((bar|foo|xyz+), zebra*)>\n"
2185 fail(
"Element declaration model regression detected");
2191 const char *
text1 =
"<?xml version='1.0' encoding='us-ascii'?>\n";
2192 const char *
text2 =
"<doc>&entity;</doc>";
2203 fail(
"Could not set foreign DTD");
2213 fail(
"Failed to reject late foreign DTD setting");
2216 fail(
"Failed to reject late hash salt change");
2227 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
2228 "<doc>&entity;</doc>";
2236 fail(
"Could not set foreign DTD");
2238 "NotStandalonehandler failed to reject");
2244 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
2245 "<doc>&entity;</doc>";
2254 "Bad DTD should not have been accepted");
2260 const char *
text1 =
"<?xml version='1.0' encoding='us-ascii'?>\n"
2261 "<!DOCTYPE doc [<!ENTITY entity 'hello world'>]>\n";
2262 const char *
text2 =
"<doc>&entity;</doc>";
2273 fail(
"Could not set foreign DTD");
2283 fail(
"Failed to reject late foreign DTD setting");
2286 fail(
"Failed to reject late hash salt change");
2297 const char *
text =
"<!DOCTYPE doc [<!ENTITY foo 'bar'>]>\n"
2311 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
2312 "<doc>&entity;</doc>";
2318 "Undefined entity not faulted");
2329 fail(
"Unable to set base");
2331 fail(
"Base setting not correct");
2333 fail(
"Unable to NULL base");
2335 fail(
"Base setting not nulled");
2342 const char *
text =
"<!DOCTYPE doc [\n"
2343 "<!ELEMENT doc (tag)>\n"
2344 "<!ATTLIST doc id ID #REQUIRED>\n"
2346 "<doc a='1' id='one' b='2'>"
2381 const char *
text =
"<!DOCTYPE doc [\n"
2382 "<!ENTITY wombat 'wom'>\n"
2383 "<!ENTITY entity 'hi &wom; there'>\n"
2385 "<doc>&entity;</doc>";
2395 fail(
"Parsing status not SUSPENDED");
2399 fail(
"Parsing status doesn't reset to INITIALIZED");
2405 const char *
text =
"<doc>Hello</doc";
2413 fail(
"Resumed invalid parse not faulted");
2415 fail(
"Invalid parse not correctly faulted");
2421 const char *
text =
"<doc>Hello<meep/>world</doc>";
2431 fail(
"Resumption not suspended");
2440 const char *
text =
"<doc><![CDATA[Hello\nworld]]></doc>";
2441 const XML_Char *expected =
XCS(
"<doc><![CDATA[Hello\nworld]]></doc>");
2457 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
2458 "<!DOCTYPE doc SYSTEM 'foo'>\n"
2459 "<doc>&entity;</doc>";
2471 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
2472 "<!DOCTYPE doc SYSTEM 'foo'>\n"
2473 "<doc>&entity;</doc>";
2488 =
"<!DOCTYPE doc [\n"
2489 " <!ENTITY entity SYSTEM 'http://example.org/dummy.ent'>\n"
2491 "<doc>&entity;</doc>";
2504 =
"<!DOCTYPE doc [\n"
2505 " <!ENTITY entity SYSTEM 'http://example.org/dummy.ent'>\n"
2507 "<doc>&entity;</doc>";
2520 const char *
text =
"<!DOCTYPE doc [\n"
2521 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
2525 = {{
"<?xml version='1.0' encoding='us-ascii'?><",
2526 "Incomplete element declaration not faulted",
NULL,
2529 "<?xml version='1.0' encoding='utf-8'?>\xe2\x82",
2541 "Parser did not report external entity error");
2549 const char *
text1 =
"<doc>Hello ";
2550 const char *
text2 =
" World</doc>";
2554 fail(
"Failed to initialise encoding to NULL");
2557 fail(
"Failed to set explicit encoding");
2563 fail(
"Allowed encoding change");
2569 fail(
"Failed to unset encoding");
2575 const char *
text =
"<doc>\r";
2584 fail(
"Failed to fault unclosed doc");
2586 fail(
"Did not catch the carriage return");
2595 fail(
"Failed to fault unclosed doc");
2597 fail(
"Did not catch default carriage return");
2603 const char *
text =
"<!DOCTYPE doc [\n"
2604 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
2617 fail(
"No carriage return found");
2629 fail(
"No carriage return found");
2635 const char *
text8 =
"<doc>]";
2636 const char text16[] =
"\xFF\xFE<\000d\000o\000c\000>\000]\000";
2645 fail(
"Failed to fault unclosed doc");
2647 fail(
"Did not catch the right square bracket");
2657 fail(
"Failed to fault unclosed doc");
2659 fail(
"Did not catch the right square bracket");
2669 fail(
"Failed to fault unclosed doc");
2671 fail(
"Did not catch the right square bracket");
2677 const char *
text =
"<!DOCTYPE doc [\n"
2678 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
2691 fail(
"No right square bracket found");
2697 const char *
text =
"<!DOCTYPE doc [\n"
2698 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
2712 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
2713 "<!-- Primary parse -->\n"
2714 "<!DOCTYPE doc SYSTEM 'foo'>\n"
2716 const char *
epilog =
"<!-- Back to primary parser -->\n"
2735 fail(
"Changed param entity parsing policy while parsing");
2740 fail(
"Comment handler not invoked enough times");
2742 fail(
"Skip handler not invoked enough times");
2744 fail(
"XML declaration handler not invoked");
2758 const char *
text =
"<?xml version='1.0' encoding='us-ascii'?>\n"
2759 "<!DOCTYPE doc SYSTEM 'foo'>\n"
2760 "<doc>&entity;</doc>";
2787 const char *
text =
"<doc></doc>";
2788 const char *
partial =
"<doc>";
2791 fail(
"Parsing empty string faulted");
2793 fail(
"Parsing final empty string not faulted");
2795 fail(
"Parsing final empty string faulted for wrong reason");
2803 fail(
"Parsing final empty string faulted");
2812 fail(
"Parsing final incomplete empty string not faulted");
2818 const char *
const doc =
"<root/>";
2825 fail(
"There was not supposed to be any initial parse error.");
2830 fail(
"Negative len was expected to fail the parse but did not.");
2833 fail(
"Parse error does not match XML_ERROR_INVALID_ARGUMENT.");
2842 const char *
const doc =
"<root/>";
2849 fail(
"There was not supposed to be any initial parse error.");
2854 fail(
"XML_GetBuffer failed.");
2861 fail(
"Negative len was expected to fail the parse but did not.");
2864 fail(
"Parse error does not match XML_ERROR_INVALID_ARGUMENT.");
2876 if (feature ==
NULL)
2895 fail(
"Negative length buffer not failed");
2900 fail(
"1.5K buffer failed");
2907 fail(
"INT_MAX buffer not failed");
2922 fail(
"INT_MAX- buffer not failed");
2926 fail(
"1000 buffer failed");
2938 fail(
"1.5K buffer failed");
2947 fail(
"1024 buffer failed");
2952#if XML_CONTEXT_BYTES > 0
2957 const char *
const text =
"\n";
2969 fail(
"enlarging buffer not failed");
2977 const char *
const prefixes[] = {
2983 "<averylongelementnamesuchthatitwillhopefullystretchacrossmultiplelinesand"
2984 "lookprettyridiculousitsalsoveryhardtoreadandifyouredoingitihavetowonderif"
2985 "youreallydonthaveanythingbettertodoofcourseiguessicouldveputsomethingbadin"
2986 "herebutipromisethatididntheybtwhowgreatarespacesandpunctuationforhelping"
2987 "withreadabilityprettygreatithinkanywaysthisisprobablylongenoughbye><x a='"};
2988 const int num_prefixes =
sizeof(prefixes) /
sizeof(prefixes[0]);
2990#if defined(__MINGW32__) && ! defined(__MINGW64__)
3037 const char *
text =
"<doc></doc>";
3041 fail(
"Byte index/count incorrect at start of parse");
3047 fail(
"Terminal byte count incorrect");
3049 fail(
"Terminal byte index incorrect");
3054#define PRE_ERROR_STR "<doc></"
3055#define POST_ERROR_STR "wombat></doc>"
3061 fail(
"Syntax error not faulted");
3063 fail(
"Error byte count incorrect");
3065 fail(
"Error byte index incorrect");
3069#undef POST_ERROR_STR
3072#define START_ELEMENT "<e>"
3073#define CDATA_TEXT "Hello"
3074#define END_ELEMENT "</e>"
3082 fail(
"Unexpected context at start of parse");
3099 const char *
text =
"<doc><>&"'</doc>";
3100 const XML_Char *expected =
XCS(
"<doc><>&"'</doc>");
3131 const char *
text =
"<!DOCTYPE doc SYSTEM '004-1.ent'>\n"
3137 "Invalid tag IN DTD external param not rejected");
3143 const char *
text[] = {
"<doc>&pt;</doc>",
"<doc>&amo;</doc>",
3144 "<doc>&quid;</doc>",
"<doc>&apod;</doc>",
NULL};
3149 "Undefined entity not rejected");
3158 const char *
text =
"<!DOCTYPE doc SYSTEM 'foo'>\n"
3159 "<doc><e>&entity;</e></doc>";
3161 =
XCS(
"<![IGNORE[<!ELEMENT e (#PCDATA)*>]]>\n&entity;");
3184 "<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0 "
3185 "\0S\0Y\0S\0T\0E\0M\0 \0'\0s\0'\0>\0\n\0"
3187 "<\0d\0>\0<\0e\0>\0&\0e\0n\0;\0<\0/\0e\0>\0<\0/\0d\0>\0";
3188 const XML_Char *expected =
XCS(
"<![IGNORE[<!ELEMENT e (#PCDATA)*>]]>\n&en;");
3211 "\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0 "
3212 "\0S\0Y\0S\0T\0E\0M\0 \0'\0s\0'\0>\0\n"
3214 "\0<\0d\0>\0<\0e\0>\0&\0e\0n\0;\0<\0/\0e\0>\0<\0/\0d\0>";
3215 const XML_Char *expected =
XCS(
"<![IGNORE[<!ELEMENT e (#PCDATA)*>]]>\n&en;");
3238 const char *
text =
"<!DOCTYPE doc SYSTEM 'foo'>\n"
3239 "<doc><e>&entity;</e></doc>";
3241 = {{
"<![IGNORE[<!ELEM",
"Broken-off declaration not faulted",
NULL,
3243 {
"<![IGNORE[\x01]]>",
"Invalid XML character not faulted",
NULL,
3246 "<![IGNORE[\xe2\x82",
"Partial XML character not faulted",
NULL,
3257 "Incomplete IGNORE section not failed");
3280 fail(
"Could not create external entity parser");
3294 }
else if (!
xcstrcmp(systemId,
XCS(
"004-1.ent"))) {
3295 text =
"<!ELEMENT doc EMPTY>\n"
3296 "<!ENTITY % e1 SYSTEM '004-2.ent'>\n"
3297 "<!ENTITY % e2 '%e1;'>\n";
3299 fail(
"unknown systemId");
3312 const char *
const text =
"<!DOCTYPE doc SYSTEM '004-1.ent'>\n"
3314 const char *
const external =
"\xEF\xBB\xBF<!ATTLIST doc a1 CDATA 'value'>";
3326 fail(
"Couldn't create parser");
3334 if (!
testdata.nested_callback_happened) {
3335 fail(
"ref handler not called");
3344 const char *
text =
"<!DOCTYPE doc SYSTEM '004-1.ent'>\n"
3348 {
"<!ATTLIST $doc a1 CDATA 'value'>",
"Invalid token not faulted",
NULL,
3350 {
"'wombat",
"Unterminated string not faulted",
NULL,
3352 {
"\xe2\x82",
"Partial UTF-8 character not faulted",
NULL,
3355 {
"<?xml?>",
"Malformed XML declaration not faulted",
NULL,
3358 "\xEF\xBB\xBF<!ATTLIST doc a1 CDATA 'value'>",
NULL,
NULL,
3360 {
"<?xml version='1.0' encoding='utf-8'?>\n$",
3361 "Invalid token after text declaration not faulted",
NULL,
3363 {
"<?xml version='1.0' encoding='utf-8'?>\n'wombat",
3364 "Unterminated string after text decl not faulted",
NULL,
3366 {
"<?xml version='1.0' encoding='utf-8'?>\n\xe2\x82",
3367 "Partial UTF-8 character after text decl not faulted",
NULL,
3369 {
"%e1;",
"Recursive parameter entity not faulted",
NULL,
3389 const char *
text =
"<!DOCTYPE doc SYSTEM 'foo'>\n"
3395 "Standalone rejection not caught");
3400 const char *
text =
"<!DOCTYPE doc SYSTEM '004-1.ent'>\n"
3413 const char *
text =
"<?xml version='1.0' encoding='utf-8'?>\n"
3414 "<!DOCTYPE doc PUBLIC '{BadName}' 'test'>\n"
3426 const char *
text =
"<?xml version='1.0' standalone='no'?>\n"
3427 "<!DOCTYPE animal SYSTEM 'test.dtd'>\n"
3428 "<animal>This is a \n <a/> \n\nyellow tiger</animal>";
3430 = {
"<!ELEMENT animal (#PCDATA|a)*>\n"
3431 "<!ELEMENT a EMPTY>\n"
3432 "<!ATTLIST animal xml:space (default|preserve) 'preserve'>",
3434 const XML_Char *expected =
XCS(
"This is a \n \n\nyellow tiger");
3451 const char *
text =
"<!DOCTYPE doc [\n"
3452 "<!ENTITY apos 'foo'>\n"
3454 "<doc>'</doc>";
3463 const char *
text =
"<!DOCTYPE doc [\n"
3465 "<!ENTITY bar 'bas'>\n"
3474 fail(
"DTD processing still going after undefined PE");
3480 const char *
text =
"<!DOCTYPE doc [\n"
3481 "<!NOTATION note PUBLIC 'foo'>\n"
3482 "<!ELEMENT doc EMPTY>\n"
3491 fail(
"Notation declaration handler not called");
3497 =
"<!DOCTYPE doc [\n"
3500 "(e,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,"
3501 "(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?,(e?"
3502 "))))))))))))))))))))))))))))))))>\n"
3503 "<!ELEMENT e EMPTY>"
3518 fail(
"Element handler not fired");
3523 const char *
text =
"<!DOCTYPE doc [\n"
3524 "<!ELEMENT doc (a|b|c)+>\n"
3525 "<!ELEMENT a EMPTY>\n"
3526 "<!ELEMENT b (#PCDATA)>\n"
3527 "<!ELEMENT c ANY>\n"
3531 "<b attr='foo'>This is a foo</b>\n"
3541 fail(
"Element handler flag not raised");
3546 const char *
text =
"<?xml version='1.0' standalone='yes'?>\n"
3547 "<!DOCTYPE doc SYSTEM 'http://example.org/' [\n"
3548 "<!ENTITY % entity '<!ELEMENT doc (#PCDATA)>'>\n"
3552 char dtd_data[] =
"<!ENTITY % e1 'foo'>\n";
3566 const char *
text =
"<?xml version='1.0'?>\n"
3567 "<!DOCTYPE root SYSTEM 'http://example.org/dtd.ent' [\n"
3568 "<!ELEMENT root (#PCDATA|a)* >\n"
3582 fail(
"Skip handler not executed");
3588 const char *
text =
"<?xml version='1.0'?>\n"
3589 "<!DOCTYPE root SYSTEM 'http://example.org/dtd.ent' [\n"
3590 "<!ELEMENT root (#PCDATA|a)* >\n"
3594 "Recursive external parameter entity not faulted",
NULL,
3601 "Recursive external parameter not spotted");
3607 const char *
text =
"<!DOCTYPE doc SYSTEM 'foo'>\n"
3645 fail(
"Attempt to parse while suspended not faulted");
3647 fail(
"Suspended parse not faulted with correct error");
3653 const char *
text =
"<doc></doc>\n\r\n";
3661 fail(
"Abort not triggered");
3669 const char *
text =
"<doc></doc>\n";
3681 const char *
text =
"<doc></doc>\n";
3694 const char *
text =
"<doc/>";
3703 fail(
"Suspend not triggered");
3708 fail(
"Resume failed");
3713 const char *
text =
"<doc></doc><";
3716 "Incomplete epilog entry not faulted");
3721 const char *
text =
"<doc></doc>\xe2\x82";
3729 fail(
"Partial character in epilog not faulted");
3738 =
"<!DOCTYPE doc [\n"
3739 "<!ENTITY foo '<suspend>Hi<suspend>Ho</suspend></suspend>'>\n"
3741 "<doc>&foo;</doc>\n";
3766 const char *
const text
3767 =
"<!DOCTYPE a [<!ENTITY e '<!--COMMENT-->a'>]><a>&e;<b>\n"
3769 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3770 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3771 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3772 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3773 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3774 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3775 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3776 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3777 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3778 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3779 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3780 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3781 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3782 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3783 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3784 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3785 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3786 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3787 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3788 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3789 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3790 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3791 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3792 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3793 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3794 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3795 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3796 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3797 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3798 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3799 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3800 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3801 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3802 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3803 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3804 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3805 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3806 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3807 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3808 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3833 const char *
text =
"<!DOCTYPE doc [\n"
3834 "<!ENTITY foo '<suspend>Hi</wombat>'>\n"
3836 "<doc>&foo;</doc>\n";
3843 fail(
"Syntax error in entity not faulted");
3851 const char *
text =
"<!DOCTYPE doc [\n"
3852 "<!ENTITY % foo '<!ELEMENT doc (#PCDATA)*>'>\n"
3855 "<doc>Hello, world</doc>";
3876 const char *
text =
"<$doc><doc></doc>";
3880 fail(
"Invalid tag name not faulted");
3884 fail(
"Restarting invalid parse not faulted");
3892 const char *
text =
"<!DOCTYPE doc [<!ATTLIST doc a CDATA '<bar>'>]>\n"
3896 "Bad attribute default not faulted");
3901 const char *
text =
"<!DOCTYPE doc [<!ATTLIST doc a CDATA '&foo'>]>\n"
3905 "Bad attribute default not faulted");
3910 const char *
text =
"<doc a='value\r'/>";
3922 const char *
text =
"<?xml version='1.0' standalone='yes' ?>\n"
3924 " <!ELEMENT doc (#PCDATA)>\n"
3925 " <!ENTITY % pe '<!ATTLIST doc att2 CDATA \"≥\">'>\n"
3926 " <!ENTITY ge 'AttDefaultValue'>\n"
3929 "<doc att2='any'/>";
3940 const char *
text =
"<!DOCTYPE doc SYSTEM 'http://example.org/'>\n"
3943 "<!ENTITY % e2 '%e1;'>\n",
3957 const char *
text =
"<!DOCTYPE doc SYSTEM 'http://example.org/one.ent'>\n"
3960 = {
"<!ENTITY % pe1 SYSTEM 'http://example.org/two.ent'>\n"
3961 "<!ENTITY % pe2 '%pe1;'>\n"
3975 const char *
text =
"<!DOCTYPE doc SYSTEM 'http://example.org/one.ent'>\n"
3978 = {
"<!ENTITY % pe1 SYSTEM 'http://example.org/two.ent'>\n"
3979 "<!ENTITY % pe2 '%pe1;'>\n"
3996#define PARAM_ENTITY_NAME "pe"
3997#define PARAM_ENTITY_CORE_VALUE "<!ATTLIST doc att CDATA \"default\">"
3998 const char *
text =
"<!DOCTYPE doc SYSTEM 'http://example.org/'>\n"
4016 fail(
"Parameter entity CR->NEWLINE conversion failed");
4018 fail(
"Parameter entity not parsed");
4020#undef PARAM_ENTITY_NAME
4021#undef PARAM_ENTITY_CORE_VALUE
4025 const char *
text =
"<!DOCTYPE doc [\n"
4026 " <!ENTITY entity '�'>\n"
4028 "<doc>&entity;</doc>";
4031 "Out of range character reference not faulted");
4036 const char *
text =
"<!DOCTYPE doc [\n"
4037 " <!ENTITY entity '&#xg0;'>\n"
4039 "<doc>&entity;</doc>";
4042 "Out of range character reference not faulted");
4049 "\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0o\0c\0 \0[\0\n"
4053 "\0<\0!\0E\0N\0T\0I\0T\0Y\0 \0e\0n\0t\0i\0t\0y\0 "
4054 "\0'\0&\x0e\x04\x0e\x08\0;\0'\0>\0\n"
4058 "\0<\0d\0o\0c\0>\0&\0e\0n\0t\0i\0t\0y\0;\0<\0/\0d\0o\0c\0>";
4062 fail(
"Invalid start of entity name not faulted");
4069 const char *
text =
"<!DOCTYPE doc [\n"
4070 " <!ENTITY entity '�'>\n"
4072 "<doc>&entity;</doc>";
4075 "Out of range character reference not faulted");
4081 const char *
text =
"<?test processing instruction?>\n<doc/>";
4082 const XML_Char *expected =
XCS(
"<?test processing instruction?>\n<doc/>");
4097 const char *
text =
"<!-- This is a comment -->\n<doc/>";
4098 const XML_Char *expected =
XCS(
"<!-- This is a comment -->\n<doc/>");
4113 const char *
text =
"<?yml something like data?><doc/>";
4114 const XML_Char *expected =
XCS(
"yml: something like data\n");
4128 const char *
text =
"<?xnl nothing like data?><doc/>";
4129 const XML_Char *expected =
XCS(
"xnl: nothing like data\n");
4143 const char *
text =
"<?xmm everything like data?><doc/>";
4144 const XML_Char *expected =
XCS(
"xmm: everything like data\n");
4163 "<\0?\0\x04\x0e\x08\x0e?\0>\0"
4167 const XML_Char *expected =
XCS(
"\x0e04\x0e08: \n");
4169 const XML_Char *expected =
XCS(
"\xe0\xb8\x84\xe0\xb8\x88: \n");
4189 "\0<\0?\x0e\x04\x0e\x08\0?\0>"
4193 const XML_Char *expected =
XCS(
"\x0e04\x0e08: \n");
4195 const XML_Char *expected =
XCS(
"\xe0\xb8\x84\xe0\xb8\x88: \n");
4213 "\0<\0!\0-\0-\0 \0C\0o\0m\0m\0e\0n\0t\0 \0A\0 \0-\0-\0>\0\n"
4215 "\0<\0d\0o\0c\0/\0>";
4232 "<\0!\0-\0-\0 \0C\0o\0m\0m\0e\0n\0t\0 \0B\0 \0-\0-\0>\0\n\0"
4234 "<\0d\0o\0c\0/\0>\0";
4252 const char *
text =
"<?xml version='1.0' encoding='no-conv'?>\n"
4263 "Encoding with missing convert() not faulted");
4268 const char *
text =
"<?xml version='1.0' encoding='failing-conv'?>\n"
4278 "Encoding with failing convert() not faulted");
4284 const char *
text =
"<?xml version='1.0' encoding='prefix-conv'?>\n"
4286 "<\x81\x64\x80oc>Hello, world</\x81\x64\x80oc>";
4295 const char *
text =
"<?xml version='1.0' encoding='prefix-conv'?>\n"
4296 "<\xff\x64oc>Hello, world</\xff\x64oc>";
4300 "Bad name start in unknown encoding not faulted");
4306 const char *
text =
"<?xml version='1.0' encoding='prefix-conv'?>\n"
4307 "<d\xffoc>Hello, world</d\xffoc>";
4311 "Bad name in unknown encoding not faulted");
4319 const char *
text =
"<?xml version='1.0' encoding='prefix-conv'?>\n"
4320 "<abcdefghabcdefghabcdefghijkl\x80m\x80n\x80o\x80p>"
4322 "</abcdefghabcdefghabcdefghijkl\x80m\x80n\x80o\x80p>";
4323 const XML_Char *expected =
XCS(
"abcdefghabcdefghabcdefghijklmnop");
4341 const char *
text =
"<?xml version='1.0' encoding='prefix-conv'?>\n"
4342 "<abcdefghabcdefghabcdefghijklmnop>"
4344 "</abcdefghabcdefghabcdefghijklmnop>";
4345 const XML_Char *expected =
XCS(
"abcdefghabcdefghabcdefghijklmnop");
4360 const char *
text =
"<?xml version='1.0' encoding='invalid-9'?>\n"
4361 "<doc>Hello world</doc>";
4365 "Invalid unknown encoding not faulted");
4370 const char *
text =
"<?xml version='1.0' encoding='ascii-like'?>\n"
4371 "<doc>Hello, world</doc>";
4379 const char *
text =
"<?xml version='1.0' encoding='ascii-like'?>\n"
4380 "<doc>Hello, \x80 world</doc>";
4384 "Invalid character not faulted");
4389 const char *
text =
"<?xml version='1.0' encoding='invalid-len'?>\n"
4390 "<doc>Hello, world</doc>";
4394 "Invalid unknown encoding not faulted");
4399 const char *
text =
"<?xml version='1.0' encoding='invalid-a'?>\n"
4400 "<doc>Hello, world</doc>";
4404 "Invalid unknown encoding not faulted");
4409 const char *
text =
"<?xml version='1.0' encoding='invalid-surrogate'?>\n"
4410 "<doc>Hello, \x82 world</doc>";
4414 "Invalid unknown encoding not faulted");
4419 const char *
text =
"<?xml version='1.0' encoding='invalid-high'?>\n"
4420 "<doc>Hello, world</doc>";
4424 "Invalid unknown encoding not faulted");
4429 const char *
text =
"<?xml version='1.0' encoding='prefix-conv'?>\n"
4430 "<doc attr='\xff\x30'/>";
4434 "Invalid attribute valid not faulted");
4443 const char *
text =
"<!DOCTYPE doc [\n"
4444 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
4452 "\xff\xfe\x4c\x20", 4,
XCS(
"iso-8859-1"),
NULL};
4457 const XML_Char *expected =
XCS(
"\xc3\xbf\xc3\xbeL ");
4474 const char *
text =
"<!DOCTYPE doc [\n"
4475 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
4483 "\xfe\xff\x20\x4c", 4,
XCS(
"iso-8859-1"),
NULL};
4488 const XML_Char *expected =
XCS(
"\xc3\xbe\xc3\xbf L");
4509 const char *
text =
"<!DOCTYPE doc [\n"
4510 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
4518 "\xff\xfe\x4c\x20", 4,
XCS(
"iso-8859-1"),
NULL};
4523 const XML_Char *expected =
XCS(
"\xc3\xbf\xc3\xbeL ");
4540 const char *
text =
"<!DOCTYPE doc [\n"
4541 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
4549 "\xfe\xff\x20\x4c", 4,
XCS(
"iso-8859-1"),
NULL};
4554 const XML_Char *expected =
"\xc3\xbe\xc3\xbf L";
4572 const char *
text =
"<!DOCTYPE doc [\n"
4573 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
4578 const XML_Char *expected =
XCS(
"\x3c00\x6500\x2f00\x3e00");
4601 const char *
text =
"<!DOCTYPE doc [\n"
4602 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
4607 const XML_Char *expected =
XCS(
"\x3c00\x6500\x2f00\x3e00");
4636 const char *
text =
"<!DOCTYPE doc [\n"
4637 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
4641 = {
"a\0b\0c\0", 6,
"Invalid character in entity not faulted",
NULL,
4647 "Invalid character should not have been accepted");
4653 const char *
text =
"<!DOCTYPE doc [\n"
4654 " <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
4681 const char *
text =
"<doc><![CDATA[one \xc3\xa9 two]]></doc>";
4685 const XML_Char *expected =
XCS(
"one \xc3\xa9 two");
4694 const char *
text =
"<doc><![CDATA[\xc3\xa9]\xc3\xa9two]]></doc>";
4696 const XML_Char *expected =
XCS(
"\x00e9]\x00e9two");
4698 const XML_Char *expected =
XCS(
"\xc3\xa9]\xc3\xa9two");
4726 {
true,
true,
"\x3A"},
4727 {
false,
false,
"\xBA"},
4728 {
true,
false,
"\x39"},
4729 {
false,
false,
"\xB9"},
4732 {
true,
true,
"\xDB\xA5"},
4734 {
false,
false,
"\x9B\xA5"},
4735 {
false,
false,
"\xDB\x25"},
4736 {
false,
false,
"\xDB\xE5"},
4737 {
true,
false,
"\xCC\x81"},
4739 {
false,
false,
"\x8C\x81"},
4740 {
false,
false,
"\xCC\x01"},
4741 {
false,
false,
"\xCC\xC1"},
4744 {
true,
true,
"\xE0\xA4\x85"},
4746 {
false,
false,
"\xA0\xA4\x85"},
4747 {
false,
false,
"\xE0\x24\x85"},
4748 {
false,
false,
"\xE0\xE4\x85"},
4749 {
false,
false,
"\xE0\xA4\x05"},
4750 {
false,
false,
"\xE0\xA4\xC5"},
4751 {
true,
false,
"\xE0\xA4\x81"},
4753 {
false,
false,
"\xA0\xA4\x81"},
4754 {
false,
false,
"\xE0\x24\x81"},
4755 {
false,
false,
"\xE0\xE4\x81"},
4756 {
false,
false,
"\xE0\xA4\x01"},
4757 {
false,
false,
"\xE0\xA4\xC1"},
4795 "FAIL case %2u (%sat name start, %u-byte sequence, error code %d)\n",
4806 fail(
"UTF-8 regression detected");
4813 const char *
text =
"<doc >Hi</doc >";
4834 "<\0d\0 \0\x04\x0e\x08\x0e=\0'\0a\0'\0/\0>\0";
4853 const char text[] =
"<\0d\0 \0a\0=\0'\0\x31\0'\0 \0"
4854 "\x04\x0e\x08\x0e=\0'\0\x32\0'\0/\0>\0";
4869 const char *
text =
"<doc attr1='a' / attr2='b'>";
4885 const char text[] =
"\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0o\0c\0 \0[\0\n"
4886 "\0<\0!\0E\0N\0T\0I\0T\0Y\0 \0%\0 \x0e\x04\x0e\x08\0 "
4887 "\0'\0<\0!\0E\0L\0E\0M\0E\0N\0T\0 "
4888 "\0d\0o\0c\0 \0(\0#\0P\0C\0D\0A\0T\0A\0)\0>\0'\0>\0\n"
4889 "\0%\x0e\x04\x0e\x08\0;\0\n"
4891 "\0<\0d\0o\0c\0>\0<\0/\0d\0o\0c\0>";
4893 const XML_Char *expected =
XCS(
"\x0e04\x0e08=<!ELEMENT doc (#PCDATA)>\n");
4896 =
XCS(
"\xe0\xb8\x84\xe0\xb8\x88=<!ELEMENT doc (#PCDATA)>\n");
4912 const char *
text =
"<!DOCTYPE doc [\n"
4913 " <!ATTLIST doc attr CDATA #!IMPLIED>\n"
4918 "Bad keyword !IMPLIED not faulted");
4935 =
"\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0 \0[\0\n"
4936 "\0<\0!\0A\0T\0T\0L\0I\0S\0T\0 \0d\0 \0a\0 \0C\0D\0A\0T\0A\0 "
4937 "\0#\x0e\x04\x0e\x08\0>\0\n"
4938 "\0]\0>\0<\0d\0/\0>";
4942 fail(
"Invalid UTF16 attribute keyword not faulted");
4952 const char *
text =
"<?xml version='1.0' encoding='prefix-conv'?>\n"
4953 "<!DOCTYPE doc [ \x80\x44 ]><doc/>";
4957 "Invalid bytes in DOCTYPE not faulted");
4962 const char *
text =
"<!DOCTYPE \xDB\x25"
4965 "Invalid UTF-8 in DOCTYPE not faulted");
4976 "\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0o\0c\0 \0[\0 "
4978 "\0 \0]\0>\0<\0d\0o\0c\0/\0>";
4982 fail(
"Invalid bytes in DOCTYPE not faulted");
4989 const char *
text =
"<!DOCTYPE 1+ [ <!ENTITY foo 'bar'> ]>\n"
4993 "'+' in document name not faulted");
4998 const char *
text =
"<!DOCTYPE 1* [ <!ENTITY foo 'bar'> ]>\n"
5002 "'*' in document name not faulted");
5007 const char *
text =
"<!DOCTYPE 1? [ <!ENTITY foo 'bar'> ]>\n"
5011 "'?' in document name not faulted");
5016 const char *
text =
"<?xml version='1.0' encoding='prefix-conv'?>"
5017 "<!DOCTYPE doc SYSTEM 'foo'>"
5018 "<doc><e>&entity;</e></doc>";
5020 "Invalid character not faulted",
XCS(
"prefix-conv"),
5028 "Bad IGNORE section with unknown encoding not failed");
5035 "\0<\0e\0 \0a\0=\0'\0&\0#\0\x32\0\x32\0\x38\0;\0 "
5036 "\0&\0#\0x\0\x30\0\x30\0E\0\x34\0;\0'\0>\0<\0/\0e\0>";
5040 const XML_Char *expected =
XCS(
"\xc3\xa4 \xc3\xa4");
5057 "<\0e\0 \0a\0=\0'\0&\0#\0\x32\0\x32\0\x38\0;\0 \0"
5058 "&\0#\0x\0\x30\0\x30\0E\0\x34\0;\0'\0>\0<\0/\0e\0>\0";
5062 const XML_Char *expected =
XCS(
"\xc3\xa4 \xc3\xa4");
5079 "\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0 \0[\0\n"
5081 "\0<\0!\0E\0N\0T\0I\0T\0Y\0 \0%\0 \0e\0 \0P\0U\0B\0L\0I\0C\0 "
5082 "\0'\0f\0o\0o\0'\0 \0'\0b\0a\0r\0.\0e\0n\0t\0'\0>\0\n"
5088 "\0<\0d\0>\0&\0j\0;\0<\0/\0d\0>";
5091 "\0<\0!\0E\0N\0T\0I\0T\0Y\0 \0j\0 \0'\0b\0a\0z\0'\0>", 34,
NULL,
NULL};
5111 "<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0 \0[\0\n\0"
5113 "<\0!\0E\0N\0T\0I\0T\0Y\0 \0%\0 \0e\0 \0P\0U\0B\0L\0I\0C\0 \0"
5114 "'\0f\0o\0o\0'\0 \0'\0b\0a\0r\0.\0e\0n\0t\0'\0>\0\n\0"
5120 "<\0d\0>\0&\0j\0;\0<\0/\0d\0>\0";
5123 "<\0!\0E\0N\0T\0I\0T\0Y\0 \0j\0 \0'\0b\0a\0z\0'\0>\0", 34,
NULL,
NULL};
5144 const char *
text =
"<!DOCTYPE doc></doc>";
5146 "DOCTYPE without subset not rejected");
5151 const char *
text =
"<!DOCTYPE doc PUBLIC></doc>";
5153 "DOCTYPE without Public ID not rejected");
5158 const char *
text =
"<!DOCTYPE doc SYSTEM></doc>";
5160 "DOCTYPE without System ID not rejected");
5165 const char *
text =
"<!DOCTYPE doc PUBLIC 'foo' 'bar' 'baz'></doc>";
5171 const char *
text =
"<!DOCTYPE doc [\n"
5172 " <!ENTITY foo PUBLIC>\n"
5176 "ENTITY without Public ID is not rejected");
5182 const char *
text =
"<!DOCTYPE doc [\n"
5183 " <!ENTITY % foo bar>\n"
5187 "ENTITY without Public ID is not rejected");
5192 const char *
text =
"<!DOCTYPE doc [\n"
5193 " <!ENTITY % foo PUBLIC>\n"
5197 "Parameter ENTITY without Public ID is not rejected");
5202 const char *
text =
"<!DOCTYPE doc [\n"
5203 " <!ENTITY % foo SYSTEM>\n"
5207 "Parameter ENTITY without Public ID is not rejected");
5212 const char *
text =
"<!DOCTYPE doc [\n"
5213 " <!NOTATION n SYSTEM>\n"
5217 "Notation without System ID is not rejected");
5223 const char *
text =
"<!DOCTYPE doc PUBLIC 'pubname' 'test.dtd' [\n"
5224 " <!ENTITY foo 'bar'>\n"
5240 fail(
"Default handler not run for public !DOCTYPE");
5245 const char *
text =
"<abort/>";
5250 fail(
"Expected to error on abort");
5258 const char *
text =
"<?xml version='1.0' encoding='UTF-8'?>\n"
5260 "<!ELEMENT foo ANY>\n"
5261 "<!ENTITY % entp SYSTEM \"external.dtd\">\n"
5282 const char *
const text =
"<!DOCTYPE a [\n"
5283 " <!ENTITY e1 '<!--e1-->'>\n"
5284 " <!ENTITY e2 '<!--e2 head-->&e1;<!--e2 tail-->'>\n"
5285 " <!ENTITY e3 '<!--e3 head-->&e2;<!--e3 tail-->'>\n"
5287 "<a><!--start-->&e3;<!--end--></a>";
5318 {
"<b><![CDATA[ value: ",
" ]]></b>"},
5319 {
"<c attr='",
"'></c>"},
5320 {
"<d><!-- ",
" --></d>"},
5365 "after %d/%d loops: pushed=%u scanned=%u (factor ~%.2f) max_scanned: %u (factor ~%u)\n",
5386 "after all input: scanned=%u (factor ~%.2f) max_scanned: %u (factor ~%u)\n",
5389 fail(
"scanned too many bytes");
5398 const char *
const pre =
"<d>";
5399 const char *
const start =
"<x attr='";
5400 const char *
const end =
"'></x>";
5435 for (
int c = 0;
c < 100; ++
c) {
5454 for (
int c = 0;
c < 101; ++
c) {
5488 const char *
const pre =
"<!ELEMENT document ANY>\n";
5489 const char *
const start =
"<!ELEMENT ";
5490 const char *
const end =
" ANY>\n";
5491 const char *
const post =
"<!ELEMENT xyz ANY>\n";
5527 for (
int c = 0;
c < 100; ++
c) {
5546 for (
int c = 0;
c < 101; ++
c) {
5567 const char *
const text
5568 =
"<!DOCTYPE document SYSTEM 'something.ext'><document/>";
5601 const char *
const pre =
"<d><x attr='";
5602 const char *
const end =
"'></x>";
5702 const int leading_list[] = {0, 3, 61, 96, 400, 401, 4000, 4010, 4099, -1};
5703 const int bigtoken_list[] = {3000, 4000, 4001, 4096, 4099, 5000, 20000, -1};
5704 const int fillsize_list[] = {131, 256, 399, 400, 401, 1025, 4099, 4321, -1};
5795 const int KiB = 1024;
5796 const int MiB = 1024 *
KiB;
5798 const int big = 7654321;
5840 -(10 *
MiB + 682 *
KiB + 7)},
5849 -(10 *
MiB + 682 *
KiB + 6)},
5894 "bytes scanned in parse attempts: actual=%u limit=%u \n",
5896 fail(
"too many bytes scanned in parse attempts");
6026#if XML_CONTEXT_BYTES > 0
const char apr_size_t len
void tcase_add_test__if_xml_ge(TCase *tc, tcase_test_function test)
const char * long_cdata_text
void tcase_add_test__ifdef_xml_dtd(TCase *tc, tcase_test_function test)
void basic_teardown(void)
enum XML_Status _XML_Parse_SINGLE_BYTES(XML_Parser parser, const char *s, int len, int isFinal)
const char * long_character_data_text
const char * get_buffer_test_text
static void test_pi_xmm(void)
static void test_invalid_character_entity_3(void)
static void test_unknown_ascii_encoding_ok(void)
static void test_ext_entity_ref_parameter(void)
static void test_reparse_deferral_is_inherited(void)
static void test_unknown_encoding_bad_ignore(void)
static void test_illegal_utf8(void)
static void test_bad_doctype_utf8(void)
static void test_missing_encoding_conversion_fn(void)
static void test_suspend_parser_between_cdata_calls(void)
static void test_ext_entity_trailing_rsqb(void)
static void test_french_charref_hexidecimal(void)
static void test_entity_in_utf16_be_attr(void)
static void test_ext_entity_set_bom(void)
static void test_ignore_section_utf16_be(void)
static void test_ignore_section_utf16(void)
static void test_bad_attr_desc_keyword_utf16(void)
static void test_undefined_ext_entity_in_external_dtd(void)
static void test_utf8_auto_align(void)
static void test_byte_info_at_error(void)
static int XMLCALL external_bom_checker(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
static void test_standalone_parameter_entity(void)
static void test_nested_groups(void)
static void test_utf16_bad_surrogate_pair(void)
static void test_reject_lt_in_attribute_value(void)
static void test_really_long_lines(void)
#define COLLIDING_HASH_SALT
static void test_partial_char_in_epilog(void)
static void test_dtd_elements_nesting(void)
static void test_trailing_cr_in_att_value(void)
static void test_danish_latin1(void)
static void test_ext_entity_set_encoding(void)
static void test_unknown_encoding_long_name_1(void)
static void test_invalid_character_entity_4(void)
static void test_wfc_undeclared_entity_standalone(void)
static void test_utf16_attribute(void)
static void test_subordinate_xdecl_abort(void)
static void test_dtd_attr_handling(void)
static void test_empty_ns_without_namespaces(void)
static void test_invalid_character_entity_2(void)
static void test_set_reparse_deferral_on_null_parser(void)
static void test_utf16_pe(void)
static void test_bad_cdata_utf16(void)
static void test_hash_collision(void)
static void test_empty_element_abort(void)
static void test_ext_entity_utf16_be(void)
static void test_xmldecl_misplaced(void)
static void test_byte_info_at_cdata(void)
static void test_trailing_rsqb(void)
static void test_utf16_pi(void)
static void test_attr_whitespace_normalization(void)
static void test_memory_allocation(void)
static void test_bypass_heuristic_when_close_to_bufsize(void)
static void test_dtd_stop_processing(void)
static void test_ext_entity_not_standalone(void)
static void test_failing_encoding_conversion_fn(void)
static void test_good_cdata_utf16(void)
static void * counting_realloc(void *ptr, size_t size)
static void test_utf8_in_start_tags(void)
static void test_abort_epilog(void)
static void test_negative_len_parse(void)
static void test_suspend_resume_internal_entity(void)
static void test_cdata_default(void)
static void test_recursive_external_parameter_entity_2(void)
static void test_ext_entity_invalid_suspended_parse(void)
static void test_bad_doctype_plus(void)
static void test_external_entity_values(void)
static void test_utf16_second_attr(void)
static void test_unknown_encoding_bad_name_2(void)
static void test_utf16_le_comment(void)
static void test_skipped_external_entity(void)
static void test_pi_handled_in_default(void)
static void test_unknown_encoding_long_name_2(void)
static void test_reset_in_entity(void)
static void test_set_bad_reparse_option(void)
static void test_dtd_elements(void)
static void test_pi_yml(void)
static void test_french_utf8(void)
static size_t g_totalAlloc
static void test_bom_utf8(void)
static void test_big_tokens_scale_linearly(void)
static void test_dtd_default_handling(void)
static void test_external_bom_consumed(void)
static void element_decl_counter(void *userData, const XML_Char *name, XML_Content *model)
static void test_ext_entity_bad_encoding(void)
static void test_utf16_le_epilog_newline(void)
static void test_group_choice(void)
static void test_xmldecl_missing_value(void)
static void test_good_cdata_ascii(void)
static void test_nobom_utf16_le(void)
static void test_siphash_spec(void)
static void test_foreign_dtd_not_standalone(void)
static void test_foreign_dtd_without_external_subset(void)
static void test_invalid_character_entity(void)
static void test_attr_after_solidus(void)
static void test_trailing_spaces_in_elements(void)
void make_basic_test_case(Suite *s)
static void test_utf8_false_rejection(void)
static void test_suspend_parser_between_char_data_calls(void)
static void test_bad_ignore_section(void)
static void test_unknown_encoding_invalid_high(void)
static void test_short_doctype_3(void)
static void test_standalone_internal_entity(void)
static void test_u0000_char(void)
static void test_not_predefined_entities(void)
static void test_ext_entity_invalid_parse(void)
static void XMLCALL element_decl_check_model(void *userData, const XML_Char *name, XML_Content *model)
static void test_recursive_external_parameter_entity(void)
static void test_buffer_can_grow_to_max(void)
static void test_unknown_encoding_invalid_topbit(void)
static void test_not_standalone_handler_reject(void)
static void test_empty_parse(void)
static void test_pool_integrity_with_unfinished_attr(void)
static void test_reject_unfinished_param_in_att_value(void)
static void test_suspend_resume_internal_entity_issue_629(void)
static void test_bad_doctype_star(void)
static void test_unknown_ascii_encoding_fail(void)
static void test_ext_entity_no_handler(void)
static void test_bad_attr_desc_keyword(void)
static void test_wfc_undeclared_entity_with_external_subset(void)
static void test_stop_parser_between_cdata_calls(void)
static void test_long_doctype(void)
static void test_nul_byte(void)
static void test_ignore_section(void)
static void test_public_notation_no_sysid(void)
static void test_bad_cdata(void)
static void test_unfinished_epilog(void)
static void test_bad_public_doctype(void)
static void test_bad_doctype_utf16(void)
static void test_line_number_after_error(void)
static void test_skipped_parameter_entity(void)
static void test_subordinate_reset(void)
static void test_explicit_encoding(void)
static void test_ext_entity_latin1_utf16le_bom(void)
static void test_xmldecl_missing_attr(void)
static void test_repeated_stop_parser_between_char_data_calls(void)
static void test_line_number_after_parse(void)
static void test_ext_entity_utf16_le(void)
static void test_long_ascii_attribute(void)
static void test_latin1_umlauts(void)
static void test_bad_notation(void)
static void test_invalid_tag_in_dtd(void)
static void test_helper_is_whitespace_normalized(void)
static void test_suspend_xdecl(void)
static void test_entity_public_utf16_be(void)
static void test_subordinate_suspend(void)
static void test_unknown_encoding_internal_entity(void)
static void test_predefined_entity_redefinition(void)
static void test_pi_xnl(void)
static void test_bad_doctype_query(void)
static void test_get_buffer_1(void)
static void test_good_cdata_utf16_le(void)
static void test_utf8_in_cdata_section_2(void)
static void test_short_doctype(void)
static void test_subordinate_xdecl_suspend(void)
static void XMLCALL check_attr_contains_normalized_whitespace(void *userData, const XML_Char *name, const XML_Char **atts)
static void test_set_foreign_dtd(void)
static void test_bad_entity_4(void)
static void * counting_malloc(size_t size)
static void test_ext_entity_latin1_utf16be_bom(void)
static void test_multichar_cdata_utf16(void)
static void test_long_cdata_utf16(void)
static void test_get_buffer_2(void)
static void test_ext_entity_good_cdata(void)
static void test_resume_invalid_parse(void)
static void test_column_number_after_parse(void)
static void test_byte_info_at_end(void)
static void test_suspend_epilog(void)
static void test_user_parameters(void)
static void test_attributes(void)
static void test_unknown_encoding_invalid_length(void)
static void test_invalid_unknown_encoding(void)
static int external_inherited_parser(XML_Parser p, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
static void test_negative_len_parse_buffer(void)
static void test_predefined_entities(void)
#define PARAM_ENTITY_NAME
static void test_set_reparse_deferral_on_the_fly(void)
static size_t g_biggestAlloc
static void test_suspend_in_sole_empty_tag(void)
static void test_restart_on_error(void)
static void test_trailing_cr(void)
static void test_really_long_encoded_lines(void)
static void test_varying_buffer_fills(void)
static void test_resume_resuspended(void)
static void test_not_utf16(void)
static void test_default_doctype_handler(void)
static void test_bad_encoding(void)
static void test_utf16_be_pi(void)
static void test_ext_entity_latin1_utf16le_bom2(void)
static void test_set_reparse_deferral(void)
static void test_set_base(void)
static void test_ext_entity_latin1_utf16be_bom2(void)
static void test_french_charref_decimal(void)
static void test_attribute_enum_value(void)
static void test_ext_entity_utf8_non_bom(void)
static void test_suspend_resume_parameter_entity(void)
static void test_not_standalone_handler_accept(void)
static void test_param_entity_with_trailing_cr(void)
static void test_french_latin1(void)
static void test_utf16_be_comment(void)
static void test_unknown_encoding_invalid_attr_value(void)
static void test_unknown_encoding_success(void)
static void test_siphash_self(void)
static void test_foreign_dtd_with_doctype(void)
static void test_getbuffer_allocates_on_zero_len(void)
static void test_invalid_foreign_dtd(void)
static void test_abort_epilog_2(void)
static void test_empty_foreign_dtd(void)
static void test_ext_entity_value_abort(void)
static void test_line_and_column_numbers_inside_handlers(void)
static void test_bad_doctype(void)
static void test_column_number_after_error(void)
#define PARAM_ENTITY_CORE_VALUE
static void test_ns_in_attribute_default_without_namespaces(void)
static void test_unknown_encoding_invalid_surrogate(void)
static void test_short_doctype_2(void)
static void test_wfc_undeclared_entity_no_external_subset(void)
static void test_bad_entity(void)
static int is_whitespace_normalized(const XML_Char *s, int is_cdata)
static void test_bad_entity_2(void)
static void test_end_element_events(void)
static void test_ext_entity_bad_encoding_2(void)
static void test_wfc_undeclared_entity_unread_external_subset(void)
static void test_nested_entity_suspend(void)
static void basic_setup(void)
static void test_wfc_undeclared_entity_with_external_subset_standalone(void)
static void test_unknown_encoding_bad_name(void)
static void test_entity_public_utf16_le(void)
static void test_resume_entity_with_syntax_error(void)
static void test_default_current(void)
static void test_long_utf8_character(void)
static void test_ext_entity_utf16_unknown(void)
static void test_bad_entity_3(void)
static void test_bom_utf16_be(void)
static void test_xmldecl_invalid(void)
static enum XML_Status get_feature(enum XML_FeatureEnum feature_id, long *presult)
static void test_wfc_no_recursive_entity_refs(void)
static void test_skipped_unloaded_ext_entity(void)
static void test_unrecognised_encoding_internal_entity(void)
static void test_utf16(void)
static void test_entity_with_external_subset_unless_standalone(void)
static void test_bom_utf16_le(void)
static void test_utf8_in_cdata_section(void)
static void test_skipped_null_loaded_ext_entity(void)
static void test_comment_handled_in_default(void)
static void test_entity_in_utf16_le_attr(void)
static void test_ext_entity_trailing_cr(void)
static void test_long_latin1_attribute(void)
static void test_stop_parser_between_char_data_calls(void)
void CharData_Init(CharData *storage)
int CharData_CheckXMLChars(CharData *storage, const XML_Char *expected)
#define expect_failure(text, errorCode, errorMessage)
#define run_character_check(text, expected)
#define run_attribute_check(text, expected)
#define run_ext_character_check(text, test_data, expected)
#define xml_failure(parser)
void XMLCALL dummy_element_decl_handler(void *userData, const XML_Char *name, XML_Content *model)
void XMLCALL dummy_start_element(void *userData, const XML_Char *name, const XML_Char **atts)
void XMLCALL dummy_end_element(void *userData, const XML_Char *name)
void XMLCALL dummy_comment_handler(void *userData, const XML_Char *data)
void XMLCALL dummy_end_doctype_handler(void *userData)
void XMLCALL dummy_start_cdata_handler(void *userData)
void XMLCALL dummy_attlist_decl_handler(void *userData, const XML_Char *elname, const XML_Char *attname, const XML_Char *att_type, const XML_Char *dflt, int isrequired)
void XMLCALL dummy_start_doctype_handler(void *userData, const XML_Char *doctypeName, const XML_Char *sysid, const XML_Char *pubid, int has_internal_subset)
void XMLCALL dummy_end_cdata_handler(void *userData)
void XMLCALL dummy_cdata_handler(void *userData, const XML_Char *s, int len)
void XMLCALL dummy_pi_handler(void *userData, const XML_Char *target, const XML_Char *data)
void XMLCALL dummy_entity_decl_handler(void *userData, const XML_Char *entityName, int is_parameter_entity, const XML_Char *value, int value_length, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName)
void XMLCALL dummy_skip_handler(void *userData, const XML_Char *entityName, int is_parameter_entity)
void XMLCALL dummy_xdecl_handler(void *userData, const XML_Char *version, const XML_Char *encoding, int standalone)
void XMLCALL dummy_default_handler(void *userData, const XML_Char *s, int len)
void XMLCALL dummy_notation_decl_handler(void *userData, const XML_Char *notationName, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void init_dummy_handlers(void)
unsigned long get_dummy_handler_flags(void)
#define DUMMY_ELEMENT_DECL_HANDLER_FLAG
#define DUMMY_SKIP_HANDLER_FLAG
#define DUMMY_NOTATION_DECL_HANDLER_FLAG
int XML_GetCurrentByteCount(XML_Parser parser)
const XML_LChar * XML_ErrorString(enum XML_Error code)
void XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status)
XML_Bool XML_SetReparseDeferralEnabled(XML_Parser parser, XML_Bool enabled)
void XML_SetStartDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start)
void XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end)
@ XML_FEATURE_CONTEXT_BYTES
XML_Index XML_GetCurrentByteIndex(XML_Parser parser)
enum XML_Status XML_SetEncoding(XML_Parser parser, const XML_Char *encoding)
void XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler handler)
void XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler)
void XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl)
void XML_SetNotStandaloneHandler(XML_Parser parser, XML_NotStandaloneHandler handler)
void XML_UseParserAsHandlerArg(XML_Parser parser)
void XML_SetCharacterDataHandler(XML_Parser parser, XML_CharacterDataHandler handler)
XML_Bool XML_ParserReset(XML_Parser parser, const XML_Char *encoding)
@ XML_ERROR_UNCLOSED_TOKEN
@ XML_ERROR_NOT_STANDALONE
@ XML_ERROR_RECURSIVE_ENTITY_REF
@ XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING
@ XML_ERROR_EXTERNAL_ENTITY_HANDLING
@ XML_ERROR_INCORRECT_ENCODING
@ XML_ERROR_MISPLACED_XML_PI
@ XML_ERROR_UNCLOSED_CDATA_SECTION
@ XML_ERROR_UNDEFINED_ENTITY
@ XML_ERROR_INVALID_TOKEN
@ XML_ERROR_UNKNOWN_ENCODING
@ XML_ERROR_INVALID_ARGUMENT
void XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler)
const XML_Char * XML_GetBase(XML_Parser parser)
void XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler)
void XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler handler)
const XML_Feature * XML_GetFeatureList(void)
#define XML_STATUS_SUSPENDED
enum XML_Status XML_Parse(XML_Parser parser, const char *s, int len, int isFinal)
void XML_SetUnknownEncodingHandler(XML_Parser parser, XML_UnknownEncodingHandler handler, void *encodingHandlerData)
enum XML_Error XML_GetErrorCode(XML_Parser parser)
@ XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE
@ XML_PARAM_ENTITY_PARSING_ALWAYS
@ XML_PARAM_ENTITY_PARSING_NEVER
void XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end)
#define XML_GetUserData(parser)
XML_Parser XML_ParserCreate(const XML_Char *encoding)
void XML_ParserFree(XML_Parser parser)
void XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler)
void XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end)
XML_Size XML_GetCurrentLineNumber(XML_Parser parser)
void XML_SetStartCdataSectionHandler(XML_Parser parser, XML_StartCdataSectionHandler start)
void XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler)
XML_Size XML_GetCurrentColumnNumber(XML_Parser parser)
void XML_SetUserData(XML_Parser parser, void *userData)
void * XML_MemRealloc(XML_Parser parser, void *ptr, size_t size)
void XML_FreeContentModel(XML_Parser parser, XML_Content *model)
enum XML_Status XML_SetBase(XML_Parser parser, const XML_Char *base)
enum XML_Error XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD)
void XML_SetSkippedEntityHandler(XML_Parser parser, XML_SkippedEntityHandler handler)
void XML_SetProcessingInstructionHandler(XML_Parser parser, XML_ProcessingInstructionHandler handler)
void * XML_MemMalloc(XML_Parser parser, size_t size)
enum XML_Status XML_ParseBuffer(XML_Parser parser, int len, int isFinal)
void XML_SetExternalEntityRefHandler(XML_Parser parser, XML_ExternalEntityRefHandler handler)
void XML_SetEndCdataSectionHandler(XML_Parser parser, XML_EndCdataSectionHandler end)
void XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler xmldecl)
int XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt)
const char * XML_GetInputContext(XML_Parser parser, int *offset, int *size)
void XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg)
void * XML_GetBuffer(XML_Parser parser, int len)
enum XML_Status XML_ResumeParser(XML_Parser parser)
XML_Parser XML_ParserCreate_MM(const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite, const XML_Char *namespaceSeparator)
int XML_SetParamEntityParsing(XML_Parser parser, enum XML_ParamEntityParsing parsing)
XML_Parser XML_ExternalEntityParserCreate(XML_Parser parser, const XML_Char *context, const XML_Char *encoding)
void XML_MemFree(XML_Parser parser, void *ptr)
void XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl)
#define XML_CONTEXT_BYTES
apr_file_t apr_off_t start
const char apr_ssize_t int partial
apr_text_header const char * text
apr_seek_where_t apr_off_t * offset
apr_array_header_t ** result
apr_vformatter_buff_t * c
int XMLCALL external_entity_param_checker(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL entity_suspending_xdecl_handler(void *userData, const XML_Char *version, const XML_Char *encoding, int standalone)
int XMLCALL external_entity_devaluer(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int XMLCALL external_entity_param(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
const void * g_handler_data
int XMLCALL external_entity_loader2(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int XMLCALL external_entity_rsqb_catcher(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL cr_cdata_handler(void *userData, const XML_Char *s, int len)
int XMLCALL MiscEncodingHandler(void *data, const XML_Char *encoding, XML_Encoding *info)
void XMLCALL data_check_comment_handler(void *userData, const XML_Char *data)
void XMLCALL accumulate_characters(void *userData, const XML_Char *s, int len)
int XMLCALL external_entity_cr_catcher(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int XMLCALL external_entity_valuer(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int get_param_entity_match_flag(void)
void XMLCALL rsqb_handler(void *userData, const XML_Char *s, int len)
void XMLCALL element_decl_suspender(void *userData, const XML_Char *name, XML_Content *model)
int XMLCALL external_entity_loader(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL record_element_start_handler(void *userData, const XML_Char *name, const XML_Char **atts)
int XMLCALL external_entity_load_ignore(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int XMLCALL external_entity_not_standalone(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL param_check_skip_handler(void *userData, const XML_Char *entityName, int is_parameter_entity)
int XMLCALL external_entity_oneshot_loader(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL record_cdata_handler(void *userData, const XML_Char *s, int len)
int XMLCALL external_entity_value_aborter(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL record_element_end_handler(void *userData, const XML_Char *name)
void XMLCALL accumulate_attribute(void *userData, const XML_Char *name, const XML_Char **atts)
void XMLCALL xml_decl_handler(void *userData, const XML_Char *version, const XML_Char *encoding, int standalone)
int XMLCALL external_entity_bad_cr_catcher(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int XMLCALL external_entity_unfinished_attlist(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int XMLCALL external_entity_suspend_xmldecl(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int XMLCALL UnrecognisedEncodingHandler(void *data, const XML_Char *encoding, XML_Encoding *info)
int XMLCALL external_entity_public(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL accumulate_entity_decl(void *userData, const XML_Char *entityName, int is_parameter_entity, const XML_Char *value, int value_length, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName)
void XMLCALL accumulate_pi_characters(void *userData, const XML_Char *target, const XML_Char *data)
static int entity_match_flag
void XMLCALL accumulate_comment(void *userData, const XML_Char *data)
void XMLCALL selective_aborting_default_handler(void *userData, const XML_Char *s, int len)
void XMLCALL end_element_event_handler(void *userData, const XML_Char *name)
void XMLCALL byte_character_handler(void *userData, const XML_Char *s, int len)
void XMLCALL end_element_event_handler2(void *userData, const XML_Char *name)
int XMLCALL external_entity_faulter2(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int XMLCALL external_entity_good_cdata_ascii(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL param_entity_match_handler(void *userData, const XML_Char *entityName, int is_parameter_entity, const XML_Char *value, int value_length, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName)
int XMLCALL UnknownEncodingHandler(void *data, const XML_Char *encoding, XML_Encoding *info)
int XMLCALL external_entity_null_loader(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL clearing_aborting_character_handler(void *userData, const XML_Char *s, int len)
int XMLCALL accept_not_standalone_handler(void *userData)
void XMLCALL suspending_comment_handler(void *userData, const XML_Char *data)
void XMLCALL record_cdata_nodefault_handler(void *userData, const XML_Char *s, int len)
int XMLCALL external_entity_load_ignore_utf16(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL ext2_accumulate_characters(void *userData, const XML_Char *s, int len)
int XMLCALL reject_not_standalone_handler(void *userData)
void XMLCALL verify_attlist_decl_handler(void *userData, const XML_Char *element_name, const XML_Char *attr_name, const XML_Char *attr_type, const XML_Char *default_value, int is_required)
int XMLCALL external_entity_suspender(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int XMLCALL external_entity_load_ignore_utf16_be(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
int XMLCALL external_entity_suspending_faulter(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL start_element_suspender(void *userData, const XML_Char *name, const XML_Char **atts)
void param_entity_match_init(const XML_Char *name, const XML_Char *value)
void XMLCALL counting_start_element_handler(void *userData, const XML_Char *name, const XML_Char **atts)
void XMLCALL checking_default_handler(void *userData, const XML_Char *s, int len)
int XMLCALL external_entity_faulter(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL parser_stop_character_handler(void *userData, const XML_Char *s, int len)
void XMLCALL accumulate_and_suspend_comment_handler(void *userData, const XML_Char *data)
void XMLCALL record_default_handler(void *userData, const XML_Char *s, int len)
void XMLCALL start_element_event_handler(void *userData, const XML_Char *name, const XML_Char **atts)
int XMLCALL external_entity_ref_param_checker(XML_Parser parameter, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL suspending_end_handler(void *userData, const XML_Char *s)
int XMLCALL external_entity_resetter(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL start_element_event_handler2(void *userData, const XML_Char *name, const XML_Char **attr)
void XMLCALL record_skip_handler(void *userData, const XML_Char *entityName, int is_parameter_entity)
#define assert_record_handler_called(storage, index, expected_name, expected_arg)
#define ENTITY_MATCH_NOT_FOUND
#define handler_record_get(storage, index)
#define ENTITY_MATCH_FAIL
const XML_Bool g_reparseDeferralEnabledDefault
void _INTERNAL_trim_to_complete_utf8_characters(const char *from, const char **fromLimRef)
void tcase_add_test(TCase *tc, tcase_test_function test)
void suite_add_tcase(Suite *suite, TCase *tc)
void set_subtest(char const *fmt,...)
void tcase_add_checked_fixture(TCase *tc, tcase_setup_function setup, tcase_teardown_function teardown)
TCase * tcase_create(const char *name)
#define assert_true(cond)
#define START_TEST(testname)
static const ap_slotmem_provider_t * storage
#define SIP_ULL(high, low)
static struct siphash * sip24_update(struct siphash *H, const void *src, size_t len)
static uint64_t siphash24(const void *src, size_t len, const struct sipkey *key)
static int sip24_valid(void)
static struct siphash * sip24_init(struct siphash *H, const struct sipkey *key)
static uint64_t sip24_final(struct siphash *H)
static struct sipkey * sip_tokey(struct sipkey *key, const void *src)
enum XML_FeatureEnum feature
enum XML_Content_Quant quant
enum XML_Content_Type type
XML_Bool nested_callback_happened
void StructData_Dispose(StructData *storage)
void StructData_CheckItems(StructData *storage, const StructDataEntry *expected, int count)
void StructData_Init(StructData *storage)
typedef int(WSAAPI *apr_winapi_fpt_WSAPoll)(IN OUT LPWSAPOLLFD fdArray