fix(XML): fuzzing stack overflow (#4629). Limit maximum XML element depth.

This commit is contained in:
Günter Obiltschnig
2024-09-26 09:03:31 +02:00
parent 3a8c6a72b1
commit 3b4a8ea6e7
6 changed files with 76 additions and 15 deletions

View File

@@ -104,6 +104,23 @@ void ParserWriterTest::testParseWriteSimple()
}
void ParserWriterTest::testMaxElementDepth()
{
DOMParser parser;
parser.setFeature(XMLReader::FEATURE_NAMESPACE_PREFIXES, false);
parser.setMaxElementDepth(2);
try
{
AutoPtr<Document> pDoc = parser.parseString(XHTML);
fail("max element depth exceeded - must throw");
}
catch (const Poco::Exception&)
{
}
}
void ParserWriterTest::setUp()
{
}
@@ -121,6 +138,7 @@ CppUnit::Test* ParserWriterTest::suite()
CppUnit_addTest(pSuite, ParserWriterTest, testParseWriteXHTML);
CppUnit_addTest(pSuite, ParserWriterTest, testParseWriteXHTML2);
CppUnit_addTest(pSuite, ParserWriterTest, testParseWriteSimple);
CppUnit_addTest(pSuite, ParserWriterTest, testMaxElementDepth);
return pSuite;
}

View File

@@ -26,8 +26,8 @@ public:
void testParseWriteXHTML();
void testParseWriteXHTML2();
void testParseWriteWSDL();
void testParseWriteSimple();
void testMaxElementDepth();
void setUp();
void tearDown();