From: Rhodri James Date: Thu, 27 Apr 2017 13:15:58 +0000 (+0100) Subject: Test long root element name with a failing allocator X-Git-Tag: R_2_2_3~22^2~153 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=02a9d765d6b18da72207b82fe6c4e0e9cd20a6ba;p=libexpat Test long root element name with a failing allocator --- diff --git a/expat/tests/runtests.c b/expat/tests/runtests.c index a8e76034..42c14252 100644 --- a/expat/tests/runtests.c +++ b/expat/tests/runtests.c @@ -8035,6 +8035,52 @@ START_TEST(test_alloc_realloc_attributes) #undef MAX_REALLOC_COUNT END_TEST +START_TEST(test_alloc_long_doc_name) +{ + const char *text = + /* 64 characters per line */ + ""; + int i; +#define MAX_ALLOC_COUNT 10 + int repeat = 0; + + for (i = 0; i < MAX_ALLOC_COUNT; i++) { + /* Repeat certain counts to defeat cached allocations */ + if ((i == 2 && repeat < 4) || + (i == 3 && repeat < 6)) { + i--; + repeat++; + } + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), + XML_TRUE) != XML_STATUS_ERROR) + break; + XML_ParserReset(parser, NULL); + } + if (i == 0) + fail("Parsing worked despite failing reallocations"); + else if (i == MAX_ALLOC_COUNT) + fail("Parsing failed even at max reallocation count"); +} +#undef MAX_ALLOC_COUNT +END_TEST + static void nsalloc_setup(void) @@ -9008,6 +9054,7 @@ make_suite(void) tcase_add_test(tc_alloc, test_alloc_realloc_param_entity_newline); tcase_add_test(tc_alloc, test_alloc_realloc_ce_extends_pe); tcase_add_test(tc_alloc, test_alloc_realloc_attributes); + tcase_add_test(tc_alloc, test_alloc_long_doc_name); suite_add_tcase(s, tc_nsalloc); tcase_add_checked_fixture(tc_nsalloc, nsalloc_setup, nsalloc_teardown);