From 1792ebf0ea489f0aeb8120cab9bca599a49ea5f4 Mon Sep 17 00:00:00 2001 From: markt Date: Thu, 16 Jun 2011 12:28:01 +0000 Subject: [PATCH] Align SSI regexp handling with htttpd git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1136399 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/ssi/ExpressionParseTree.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/java/org/apache/catalina/ssi/ExpressionParseTree.java b/java/org/apache/catalina/ssi/ExpressionParseTree.java index a5b5544a1..fa3607b7a 100644 --- a/java/org/apache/catalina/ssi/ExpressionParseTree.java +++ b/java/org/apache/catalina/ssi/ExpressionParseTree.java @@ -21,6 +21,7 @@ import java.text.ParseException; import java.util.LinkedList; import java.util.List; import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; /** * Represents a parsed expression. * @@ -357,13 +358,18 @@ public class ExpressionParseTree { val2.charAt(val2Len - 1) == '/') { // Treat as a regular expression String expr = val2.substring(1, val2Len - 1); - Pattern pattern = Pattern.compile(expr); - // Regular expressions will only ever be used with EqualNode - // so return zero for equal and non-zero for not equal - if (pattern.matcher(val1).find()) { + try { + Pattern pattern = Pattern.compile(expr); + // Regular expressions will only ever be used with EqualNode + // so return zero for equal and non-zero for not equal + if (pattern.matcher(val1).find()) { + return 0; + } else { + return -1; + } + } catch (PatternSyntaxException pse) { + ssiMediator.log("Invalid expression: " + expr, pse); return 0; - } else { - return -1; } } return val1.compareTo(val2); -- 2.11.0