From 54617d09c18545e191cde2d4aecd49d0d39bc364 Mon Sep 17 00:00:00 2001 From: hns Date: Mon, 12 Nov 2007 14:43:48 +0000 Subject: [PATCH] * Limit maximal loop count for Macro.resolveHandler() lookup. Fixes symptoms of bug 543. --- src/helma/framework/core/Skin.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/helma/framework/core/Skin.java b/src/helma/framework/core/Skin.java index b38ed163..7fa46f5d 100644 --- a/src/helma/framework/core/Skin.java +++ b/src/helma/framework/core/Skin.java @@ -1099,8 +1099,10 @@ public final class Skin { // the handler object is not what we want Object obj = thisObject; - // walk down parent chain to find handler object - while (obj != null) { + // walk down parent chain to find handler object, + // limiting to 50 passes to avoid infinite loops + int maxloop = 50; + while (obj != null && maxloop-- > 0) { Prototype proto = app.getPrototype(obj); if ((proto != null) && proto.isInstanceOf(handlerName)) {