[clang] d78b5ce - [clang][HeuristicResolver] Additional hardening against an infinite loop in simplifyType() (#126690)
Kadir Cetinkaya via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 11 00:38:48 PST 2025
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;
More information about the cfe-commits
mailing list