[llvm-branch-commits] [clang] [clang][HeuristicResolver] Additional hardening against an infinite loop in simplifyType() (PR #126690)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Feb 10 23:09:03 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Nathan Ridge (HighCommander4)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/126690.diff
1 Files Affected:
- (modified) clang/lib/Sema/HeuristicResolver.cpp (+5-1)
``````````diff
diff --git a/clang/lib/Sema/HeuristicResolver.cpp b/clang/lib/Sema/HeuristicResolver.cpp
index 3cbf33dcdced38..adce403412f689 100644
--- a/clang/lib/Sema/HeuristicResolver.cpp
+++ b/clang/lib/Sema/HeuristicResolver.cpp
@@ -258,7 +258,11 @@ QualType HeuristicResolverImpl::simplifyType(QualType Type, const Expr *E,
}
return T;
};
- while (!Current.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 (!Current.Type.isNull() && StepCount++ < MaxSteps) {
TypeExprPair New = SimplifyOneStep(Current);
if (New.Type == Current.Type)
break;
``````````
</details>
https://github.com/llvm/llvm-project/pull/126690
More information about the llvm-branch-commits
mailing list