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

Reply via email to