From 88a965934b16c586796f0766bd9225e121431b43 Mon Sep 17 00:00:00 2001 From: JohnnyMorganz Date: Fri, 9 Jun 2023 21:32:43 +0100 Subject: [PATCH] Add recursion limiter --- Analysis/src/ConstraintGraphBuilder.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Analysis/src/ConstraintGraphBuilder.cpp b/Analysis/src/ConstraintGraphBuilder.cpp index 95c80417..54c54c8d 100644 --- a/Analysis/src/ConstraintGraphBuilder.cpp +++ b/Analysis/src/ConstraintGraphBuilder.cpp @@ -1154,11 +1154,19 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatDeclareC if (FFlag::LuauParseDeclareClassIndexer && declaredClass->indexer) { - // TODO: Recursion limit. - ctv->indexer = TableIndexer{ - resolveType(scope, declaredClass->indexer->indexType, /* inTypeArguments */ false), - resolveType(scope, declaredClass->indexer->resultType, /* inTypeArguments */ false), - }; + RecursionCounter counter{&recursionCount}; + + if (recursionCount >= FInt::LuauCheckRecursionLimit) + { + reportCodeTooComplex(declaredClass->indexer->location); + } + else + { + ctv->indexer = TableIndexer{ + resolveType(scope, declaredClass->indexer->indexType, /* inTypeArguments */ false), + resolveType(scope, declaredClass->indexer->resultType, /* inTypeArguments */ false), + }; + } } for (const AstDeclaredClassProp& prop : declaredClass->props)