diff options
author | fdrake <fdrake> | 2002-08-30 22:05:55 +0000 |
---|---|---|
committer | fdrake <fdrake> | 2002-08-30 22:05:55 +0000 |
commit | 9fba2016abbe64126c8e1052fd6817c4b0ac7e83 (patch) | |
tree | b54965edbc0f8748a881865542b57a6b78c2141d /tests/runtests.c | |
parent | 22d2148e78c329d9a60c2e49bdfdf76a40a20b27 (diff) | |
download | libexpat-9fba2016abbe64126c8e1052fd6817c4b0ac7e83.tar.gz |
New test: demonstrate segfault in epilogProcessor(). Karl has a fix
for this that he'll check in shortly.
Diffstat (limited to 'tests/runtests.c')
-rw-r--r-- | tests/runtests.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/runtests.c b/tests/runtests.c index 12b6e45..fcb7e6a 100644 --- a/tests/runtests.c +++ b/tests/runtests.c @@ -266,6 +266,28 @@ START_TEST(test_utf16) } END_TEST +START_TEST(test_utf16_le_epilog_newline) +{ + int first_chunk_bytes = 17; + char text[] = + "\xFF\xFE" /* BOM */ + "<\000e\000/\000>\000" /* document element */ + "\r\000\n\000\r\000\n\000"; /* epilog */ + + if (first_chunk_bytes >= sizeof(text) - 1) + fail("bad value of first_chunk_bytes"); + if (XML_Parse(parser, text, first_chunk_bytes, 0) == XML_STATUS_ERROR) + xml_failure(parser); + else { + enum XML_Status rc; + rc = XML_Parse(parser, text + first_chunk_bytes, + sizeof(text) - first_chunk_bytes - 1, 1); + if (rc == XML_STATUS_ERROR) + xml_failure(parser); + } +} +END_TEST + /* Regression test for SF bug #481609. */ START_TEST(test_latin1_umlauts) { @@ -784,6 +806,7 @@ make_basic_suite(void) tcase_add_test(tc_basic, test_bom_utf16_le); tcase_add_test(tc_basic, test_illegal_utf8); tcase_add_test(tc_basic, test_utf16); + tcase_add_test(tc_basic, test_utf16_le_epilog_newline); tcase_add_test(tc_basic, test_latin1_umlauts); /* Regression test for SF bug #491986. */ tcase_add_test(tc_basic, test_danish_latin1); |