From e94552c9ca883f8c4f2cead24355a60ecba0efb2 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Thu, 12 Feb 2015 08:12:12 -0800 Subject: DOCTYPE parsing is now stackless This prevents malformed input XML with very deeply recursive DOCTYPE sections from crashing the parser. Fixes #29. --- tests/test_parse_doctype.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'tests/test_parse_doctype.cpp') diff --git a/tests/test_parse_doctype.cpp b/tests/test_parse_doctype.cpp index 14268f6..646ebbf 100644 --- a/tests/test_parse_doctype.cpp +++ b/tests/test_parse_doctype.cpp @@ -322,3 +322,43 @@ TEST(parse_doctype_error_ignore) CHECK(doc.load_string(STR(" str; + + int count = 100000; + + str += ""); + + str += ">"; + + xml_document doc; + CHECK(doc.load_string(str.c_str(), parse_fragment)); +} + +TEST(parse_doctype_stackless_ignore) +{ + std::basic_string str; + + int count = 100000; + + str += ""); + + str += ">"; + + xml_document doc; + CHECK(doc.load_string(str.c_str(), parse_fragment)); +} -- cgit v1.2.3 From 78353022978140e9c8e21d37509e8137989339c6 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Thu, 12 Feb 2015 08:54:44 -0800 Subject: tests: Fix tests for wchar mode --- tests/test_parse_doctype.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'tests/test_parse_doctype.cpp') diff --git a/tests/test_parse_doctype.cpp b/tests/test_parse_doctype.cpp index 646ebbf..901890c 100644 --- a/tests/test_parse_doctype.cpp +++ b/tests/test_parse_doctype.cpp @@ -329,7 +329,7 @@ TEST(parse_doctype_stackless_group) int count = 100000; - str += ""); - str += ">"; + str += STR(">"); xml_document doc; CHECK(doc.load_string(str.c_str(), parse_fragment)); @@ -349,7 +349,7 @@ TEST(parse_doctype_stackless_ignore) int count = 100000; - str += ""); - str += ">"; + str += STR(">"); xml_document doc; CHECK(doc.load_string(str.c_str(), parse_fragment)); -- cgit v1.2.3