Check recursion depth in assembly parser.

This commit is contained in:
chriseth
2017-08-22 12:44:22 +02:00
parent 97cb571ba4
commit 692e4c57e8
7 changed files with 46 additions and 40 deletions
-32
View File
@@ -64,25 +64,6 @@ private:
SourceLocation m_location;
};
/// Utility class that creates an error and throws an exception if the
/// recursion depth is too deep.
class Parser::RecursionGuard
{
public:
explicit RecursionGuard(Parser& _parser):
m_parser(_parser)
{
m_parser.increaseRecursionDepth();
}
~RecursionGuard()
{
m_parser.decreaseRecursionDepth();
}
private:
Parser& m_parser;
};
ASTPointer<SourceUnit> Parser::parse(shared_ptr<Scanner> const& _scanner)
{
try
@@ -1542,19 +1523,6 @@ ASTPointer<ParameterList> Parser::createEmptyParameterList()
return nodeFactory.createNode<ParameterList>(vector<ASTPointer<VariableDeclaration>>());
}
void Parser::increaseRecursionDepth()
{
m_recursionDepth++;
if (m_recursionDepth >= 4096)
fatalParserError("Maximum recursion depth reached during parsing.");
}
void Parser::decreaseRecursionDepth()
{
solAssert(m_recursionDepth > 0, "");
m_recursionDepth--;
}
string Parser::currentTokenName()
{
Token::Value token = m_scanner->currentToken();