https://issues.apache.org/bugzilla/show_bug.cgi?id=55176

            Bug ID: 55176
           Summary: SSI regular expressions parsing fails
           Product: Tomcat 7
           Version: 7.0.39
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: david.reit...@gmail.com

Created attachment 30513
  --> https://issues.apache.org/bugzilla/attachment.cgi?id=30513&action=edit
test cases 1, 2 and 3

Regular Expressions in SSI fail to parse.

This uses SSI in 7.0.39 using SSIFilter.  The file is parsed, in principle, but
whenever an IF expression with a certain regular expression is encountered,
Tomcat seems to either show an exception (test case 2) stop processing the file
and will not return any contents after that (for test case 3).

Certain very simple regular expressions such as /a/ do not show an error (test
case 1).


Example:

My request is:

http://...:8080/tomcat7_ssi_bug/foo.html?year=234234

The relevant portion of the file is (test case 3):

<!--#if expr="${QUERY_STRING} = /year=(.*)/" -->

I have tried a number of variants, including $QUERY_STRING instead of ${...}.
I find no error about this in the logs.

I tried simpler regular expressions.  The following

<!--#if expr="${QUERY_STRING} = /year=/" -->

Leads to the error below:

java.lang.ClassCastException:
org.apache.catalina.ssi.ExpressionParseTree$EqualNode cannot be cast to
org.apache.catalina.ssi.ExpressionParseTree$StringNode
   
org.apache.catalina.ssi.ExpressionParseTree$CompareNode.compareBranches(ExpressionParseTree.java:353)
   
org.apache.catalina.ssi.ExpressionParseTree$EqualNode.evaluate(ExpressionParseTree.java:381)
   
org.apache.catalina.ssi.ExpressionParseTree.evaluateTree(ExpressionParseTree.java:67)
   
org.apache.catalina.ssi.SSIConditional.evaluateArguments(SSIConditional.java:124)
    org.apache.catalina.ssi.SSIConditional.process(SSIConditional.java:50)
    org.apache.catalina.ssi.SSIProcessor.process(SSIProcessor.java:160)
    org.apache.catalina.ssi.SSIFilter.doFilter(SSIFilter.java:144)


This occurs whenever the regular expression does not contain any parenthesis.  

Attached war file contains foo.html, showing test cases 1 and 2, and bar.html,
showing test case 1 and 3.

By the way, these regular expressions work as intended in Apache (httpd) 2.

See also feature request #53387.  (The back reference in this example is not
what causes the exception.)

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to