76 fail(
"Parser unexpectedly ignored failing allocator");
78 fail(
"Parser not created with max allocation count");
96 fail(
"Parser ignored failing allocator");
98 fail(
"Parser not created with max allocation count");
110#if defined(__has_feature)
111# if __has_feature(undefined_behavior_sanitizer)
112# define EXPAT_TESTS_UBSAN 1
114# define EXPAT_TESTS_UBSAN 0
117# define EXPAT_TESTS_UBSAN 0
122#if ! EXPAT_TESTS_UBSAN
132 fail(
"Negative error code not rejected");
136 fail(
"Large error code not rejected");
204 fail(
"Could not obtain version text");
207 fail(
"Unable to parse version text");
209 fail(
"Version mismatch");
212 fail(
"XML_*_VERSION in expat.h out of sync?\n");
223 fail(
"Failed to get feature information");
230 fail(
"Incorrect size of XML_Char");
234 fail(
"Incorrect size of XML_LChar");
249 const char *
text =
"<D xmlns:L=\"D\" l:a='' L:a=''/>";
260 fail(
"Memory leak found");
269 "v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0?\0>\0"
270 "<\0q\0>\0H\0i\0<\0/\0q\0>\0";
276 fail(
"Parser not created");
292 const char *
const doc1 =
"<doc><e1/><e><foo/></e></doc>";
305 fail(
"Stopping the parser did not work as expected");
313 const char *
const doc2 =
"<doc><elem/></doc>";
326 fail(
"Stopping the parser did not work as expected");
331 const char *
const inputOne =
"<!DOCTYPE d [\n"
332 "<!ENTITY % e ']><d/>'>\n"
337 "<!ENTITY % e1 ']><d/>'><!ENTITY % e2 '%e1;'>\n"
340 const char *
const inputThree =
"<!DOCTYPE d [\n"
341 "<!ENTITY % e ']><d'>\n"
345 "<!ENTITY % foo ']>\n"
346 "<doc>Hell<oc (#PCDATA)*>'>\n"
349 "<doc>Hello, world</dVc>";
367 fail(
"Failed to set XML_PARAM_ENTITY_PARSING_ALWAYS.");
373 fail(
"Parsing was expected to fail but succeeded.");
378 fail(
"Error code does not match XML_ERROR_INVALID_TOKEN");
382 fail(
"XML_GetCurrentLineNumber does not work as expected.");
385 if (columnNumber != 0)
386 fail(
"XML_GetCurrentColumnNumber does not work as expected.");
395 const char *
const text =
"<open xmlns='https://namespace1.test'></close>";
400 fail(
"Call to parse was expected to fail");
402 fail(
"Call to parse was expected to fail from a closing tag mismatch");
408 fail(
"Call to parse was expected to fail");
410 fail(
"Call to parse was expected to fail from a closing tag mismatch");
435 const char *
const doc
437 "<!ENTITY e1 'v1'>\n"
438 "<!ENTITY e2 SYSTEM 'v2'>\n"
440 "<r a1='[&e1;]'>[&e1;][&e2;][&'><"]</r>";
465 XCS(
"(r(a1=[v1]))\n")
466 XCS(
"[v1][][&'><\"]")
470 XCS(
"(r(a1=[&e1;]))\n")
471 XCS(
"[&e1;][&e2;][&'><\"]")
489 const char *
const data
490 =
"<!DOCTYPE t1[<!ENTITY e1 'angle<'><!ENTITY e2 '&e1;'>]><t1>&e2;";
511 for (
size_t i = 0;
i <
sizeof(
cases) /
sizeof(
cases[0]);
i++) {
const char apr_size_t len
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)
void * duff_allocator(size_t size)
void CharData_Init(CharData *storage)
int CharData_CheckXMLChars(CharData *storage, const XML_Char *expected)
#define expect_failure(text, errorCode, errorMessage)
#define xml_failure(parser)
const XML_LChar * XML_ErrorString(enum XML_Error code)
void XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end)
@ XML_FEATURE_SIZEOF_XML_LCHAR
@ XML_FEATURE_SIZEOF_XML_CHAR
void XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler handler)
void XML_SetCharacterDataHandler(XML_Parser parser, XML_CharacterDataHandler handler)
XML_Bool XML_ParserReset(XML_Parser parser, const XML_Char *encoding)
@ XML_ERROR_UNBOUND_PREFIX
@ XML_ERROR_INVALID_TOKEN
void XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler)
const XML_Feature * XML_GetFeatureList(void)
enum XML_Status XML_StopParser(XML_Parser parser, XML_Bool resumable)
enum XML_Error XML_GetErrorCode(XML_Parser parser)
@ XML_PARAM_ENTITY_PARSING_ALWAYS
XML_Parser XML_ParserCreate(const XML_Char *encoding)
void XML_ParserFree(XML_Parser parser)
XML_Size XML_GetCurrentLineNumber(XML_Parser parser)
struct XML_ParserStruct * XML_Parser
XML_Size XML_GetCurrentColumnNumber(XML_Parser parser)
void XML_SetUserData(XML_Parser parser, void *userData)
XML_Parser XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator)
void XML_SetExternalEntityRefHandler(XML_Parser parser, XML_ExternalEntityRefHandler handler)
void * XML_GetBuffer(XML_Parser parser, int len)
const XML_LChar * XML_ExpatVersion(void)
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)
XML_Expat_Version XML_ExpatVersionInfo(void)
apr_text_header const char * text
apr_array_header_t ** result
const apr_array_header_t * first
const apr_array_header_t const apr_array_header_t * second
void XMLCALL accumulate_characters(void *userData, const XML_Char *s, int len)
int XMLCALL external_entity_failer__if_not_xml_ge(XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
void XMLCALL start_element_issue_240(void *userData, const XML_Char *name, const XML_Char **atts)
void XMLCALL accumulate_start_element(void *userData, const XML_Char *name, const XML_Char **atts)
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 end_element_issue_240(void *userData, const XML_Char *name)
void * tracking_malloc(size_t size)
void * tracking_realloc(void *ptr, size_t size)
void tracking_free(void *ptr)
int tracking_report(void)
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 int versions_equal(const XML_Expat_Version *first, const XML_Expat_Version *second)
static void test_misc_attribute_leak(void)
static void test_misc_alloc_create_parser(void)
static void test_misc_tag_mismatch_reset_leak(void)
static void test_misc_stop_during_end_handler_issue_240_1(void)
static void test_misc_error_string(void)
static void test_misc_stop_during_end_handler_issue_240_2(void)
static void test_misc_stopparser_rejects_unstarted_parser(void)
static int parse_version(const XML_LChar *version_text, XML_Expat_Version *version_struct)
static void test_misc_create_external_entity_parser_with_null_context(void)
void make_miscellaneous_test_case(Suite *s)
static void XMLCALL resumable_stopping_character_handler(void *userData, const XML_Char *s, int len)
static void test_misc_deny_internal_entity_closing_doctype_issue_317(void)
static void test_misc_utf16le(void)
static void test_misc_alloc_create_parser_with_encoding(void)
static void test_misc_version(void)
static void test_misc_char_handler_stop_without_leak(void)
static void test_misc_features(void)
static void test_misc_null_parser(void)
static void test_misc_general_entities_support(void)
static void test_misc_resumeparser_not_crashing(void)
static const ap_slotmem_provider_t * storage