Implement stack size limitation for iterative parsing.

This commit is contained in:
thebusytypist
2014-07-15 14:16:06 +08:00
parent 46e89dad0d
commit 1f53c6c041
5 changed files with 72 additions and 23 deletions

View File

@@ -1288,6 +1288,18 @@ TEST(Reader, IterativeParsing_ShortCircuit) {
}
}
TEST(Reader, IterativeParsing_LimitStackSize) {
BaseReaderHandler<> handler;
Reader reader(20);
StringStream is("[[[]]]");
ParseResult r = reader.Parse<kParseIterativeFlag>(is, handler);
EXPECT_TRUE(reader.HasParseError());
EXPECT_EQ(kParseErrorStackSizeLimitExceeded, r.Code());
EXPECT_EQ(2, r.Offset());
}
#ifdef __GNUC__
RAPIDJSON_DIAG_POP
#endif