From c3eacf9000d62bb7cc019f2d03bae8a5a70af6b9 Mon Sep 17 00:00:00 2001 From: de4dot Date: Wed, 16 Apr 2014 19:11:04 +0200 Subject: [PATCH] Prevent stack overflow in Check() --- de4dot.code/renamer/DerivedFrom.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/de4dot.code/renamer/DerivedFrom.cs b/de4dot.code/renamer/DerivedFrom.cs index fefc1b8e..abe4ddc4 100644 --- a/de4dot.code/renamer/DerivedFrom.cs +++ b/de4dot.code/renamer/DerivedFrom.cs @@ -40,6 +40,12 @@ namespace de4dot.code.renamer { } public bool Check(MTypeDef type) { + return Check(type, 0); + } + + public bool Check(MTypeDef type, int recurseCount) { + if (recurseCount >= 100) + return false; if (results.ContainsKey(type)) return results[type]; @@ -53,7 +59,7 @@ namespace de4dot.code.renamer { val = false; } else - val = Check(type.baseType.typeDef); + val = Check(type.baseType.typeDef, recurseCount + 1); results[type] = val; return val;