Author: Nathan Ridge Date: 2025-02-11T09:17:41+01:00 New Revision: d78b5ceb1661c5953563bf860f93b65f85fc4be0
URL: https://github.com/llvm/llvm-project/commit/d78b5ceb1661c5953563bf860f93b65f85fc4be0 DIFF: https://github.com/llvm/llvm-project/commit/d78b5ceb1661c5953563bf860f93b65f85fc4be0.diff LOG: [clang][HeuristicResolver] Additional hardening against an infinite loop in simplifyType() (#126690) Added: Modified: clang/lib/Sema/HeuristicResolver.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/HeuristicResolver.cpp b/clang/lib/Sema/HeuristicResolver.cpp index 36e5b44b8b12cc..c9806a77d5ef6d 100644 --- a/clang/lib/Sema/HeuristicResolver.cpp +++ b/clang/lib/Sema/HeuristicResolver.cpp @@ -247,7 +247,11 @@ QualType HeuristicResolverImpl::simplifyType(QualType Type, const Expr *E, } return T; }; - while (!Type.isNull()) { + // As an additional protection against infinite loops, bound the number of + // simplification steps. + size_t StepCount = 0; + const size_t MaxSteps = 64; + while (!Type.isNull() && StepCount++ < MaxSteps) { QualType New = SimplifyOneStep(Type); if (New == Type) break; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits