From 9032ba09e82735f2191edf9727c82fa731d1f3a2 Mon Sep 17 00:00:00 2001 From: Rhodri James Date: Mon, 19 Jun 2017 16:10:04 +0100 Subject: [PATCH] Test CDATA is passed correctly from little-endian UTF-16 input --- expat/tests/runtests.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/expat/tests/runtests.c b/expat/tests/runtests.c index 4beb4fa8..a02ce884 100644 --- a/expat/tests/runtests.c +++ b/expat/tests/runtests.c @@ -2189,6 +2189,31 @@ START_TEST(test_good_cdata_utf16) } END_TEST +START_TEST(test_good_cdata_utf16_le) +{ + /* Test data is: + * + * + */ + const char text[] = + "<\0?\0x\0m\0l\0" + " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0" + " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0""1\0""6\0'" + "\0?\0>\0\n" + "\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"; + const char *expected = "hello"; + + CharData storage; + CharData_Init(&storage); + XML_SetUserData(parser, &storage); + XML_SetCharacterDataHandler(parser, 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 + /* Test UTF16 conversion of a long cdata string */ /* 16 characters: handy macro to reduce visual clutter */ @@ -11836,6 +11861,7 @@ make_suite(void) tcase_add_test(tc_basic, test_repeated_stop_parser_between_char_data_calls); tcase_add_test(tc_basic, test_good_cdata_ascii); tcase_add_test(tc_basic, test_good_cdata_utf16); + tcase_add_test(tc_basic, test_good_cdata_utf16_le); tcase_add_test(tc_basic, test_long_cdata_utf16); tcase_add_test(tc_basic, test_multichar_cdata_utf16); tcase_add_test(tc_basic, test_utf16_bad_surrogate_pair); -- 2.40.0