From: markt Date: Thu, 16 Jun 2011 12:28:01 +0000 (+0000) Subject: Align SSI regexp handling with htttpd X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=1792ebf0ea489f0aeb8120cab9bca599a49ea5f4;p=tomcat7.0 Align SSI regexp handling with htttpd git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1136399 13f79535-47bb-0310-9956-ffa450edef68 --- 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);