From 19d4c9e2c3d9ea3e32da1147c9fb7ff2cf7021a7 Mon Sep 17 00:00:00 2001 From: Rhodri James Date: Mon, 19 Jun 2017 17:00:58 +0100 Subject: [PATCH] Test public external param entity in UTF-16 big-endian --- expat/tests/runtests.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/expat/tests/runtests.c b/expat/tests/runtests.c index a0f7fb67..0f423e7a 100644 --- a/expat/tests/runtests.c +++ b/expat/tests/runtests.c @@ -6567,6 +6567,44 @@ START_TEST(test_entity_in_utf16_le_attr) } END_TEST +START_TEST(test_entity_public_utf16_be) +{ + const char text[] = + /* */ + "\0<\0!\0E\0N\0T\0I\0T\0Y\0 \0%\0 \0e\0 \0P\0U\0B\0L\0I\0C\0 " + "\0'\0f\0o\0o\0'\0 \0'\0b\0a\0r\0.\0e\0n\0t\0'\0>\0\n" + /* %e; */ + "\0%\0e\0;\0\n" + /* ]> */ + "\0]\0>\0\n" + /* &j; */ + "\0<\0d\0>\0&\0j\0;\0<\0/\0d\0>"; + ExtTest2 test_data = { + /* */ + "\0<\0!\0E\0N\0T\0I\0T\0Y\0 \0j\0 \0'\0b\0a\0z\0'\0>", + 34, + NULL, + NULL, + EE_PARSE_NONE + }; + const XML_Char *expected = "baz"; + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(parser, external_entity_loader2); + XML_SetUserData(parser, &test_data); + XML_SetCharacterDataHandler(parser, ext2_accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(parser, text, sizeof(text)-1, + XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + /* * Namespaces tests. */ @@ -12046,6 +12084,7 @@ make_suite(void) tcase_add_test(tc_basic, test_unknown_encoding_bad_ignore); tcase_add_test(tc_basic, test_entity_in_utf16_be_attr); tcase_add_test(tc_basic, test_entity_in_utf16_le_attr); + tcase_add_test(tc_basic, test_entity_public_utf16_be); suite_add_tcase(s, tc_namespace); tcase_add_checked_fixture(tc_namespace,