From: Rhodri James Date: Tue, 6 Jun 2017 17:40:50 +0000 (+0100) Subject: Add test for encoding conversion function returning errors X-Git-Tag: R_2_2_3~22^2~95 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b2ba9d79119bfda2b8d591c679a80194110a80eb;p=libexpat Add test for encoding conversion function returning errors --- diff --git a/expat/tests/runtests.c b/expat/tests/runtests.c index 1e0a52c5..c1e24212 100644 --- a/expat/tests/runtests.c +++ b/expat/tests/runtests.c @@ -5304,6 +5304,31 @@ START_TEST(test_missing_encoding_conversion_fn) } END_TEST +static int XMLCALL +failing_converter(void *UNUSED_P(data), const char *UNUSED_P(s)) +{ + /* Always claim to have failed */ + return -1; +} + +START_TEST(test_failing_encoding_conversion_fn) +{ + const char *text = + "\n" + "\x81"; + + XML_SetUnknownEncodingHandler(parser, BadEncodingHandler, + (void *)failing_converter); + /* BadEncodingHandler sets up an encoding with every top-bit-set + * character introducing a two-byte sequence. For this, it + * requires a convert function. The above function call passes + * one that insists all possible sequences are invalid anyway. + */ + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Encoding with failing convert() not faulted"); +} +END_TEST + /* * Namespaces tests. @@ -10562,6 +10587,7 @@ make_suite(void) tcase_add_test(tc_basic, test_pi_handled_in_default); tcase_add_test(tc_basic, test_comment_handled_in_default); tcase_add_test(tc_basic, test_missing_encoding_conversion_fn); + tcase_add_test(tc_basic, test_failing_encoding_conversion_fn); suite_add_tcase(s, tc_namespace); tcase_add_checked_fixture(tc_namespace,