Author: markt Date: Wed Sep 9 19:30:52 2015 New Revision: 1702092 URL: http://svn.apache.org/r1702092 Log: Fix an edge case parser bug found while investigating BZ 57136
Modified: tomcat/trunk/java/org/apache/el/parser/ELParser.jjt tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java tomcat/trunk/test/org/apache/el/TestELEvaluation.java Modified: tomcat/trunk/java/org/apache/el/parser/ELParser.jjt URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ELParser.jjt?rev=1702092&r1=1702091&r2=1702092&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/ELParser.jjt (original) +++ tomcat/trunk/java/org/apache/el/parser/ELParser.jjt Wed Sep 9 19:30:52 2015 @@ -473,7 +473,7 @@ java.util.Deque<Integer> deque = new jav */ < LITERAL_EXPRESSION: ( (~["$", "#", "\\"])* "\\" (["$", "#"])? - | (~["$", "#"])* (["$", "#"] ~["{", "$", "#"]) + | (~["$", "#"])* (["$", "#"] ~["{", "$", "#", "\\"]) | (~["$", "#"])+ )+ | "$" Modified: tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java?rev=1702092&r1=1702091&r2=1702092&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java (original) +++ tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java Wed Sep 9 19:30:52 2015 @@ -1,7 +1,5 @@ /* Generated By:JJTree&JavaCC: Do not edit this line. ELParserTokenManager.java */ package org.apache.el.parser; -import java.io.StringReader; -import javax.el.ELException; /** Token Manager. */ @SuppressWarnings("all") // Ignore warnings in generated code @@ -187,7 +185,7 @@ private int jjMoveNfa_0(int startState, jjCheckNAddTwoStates(3, 4); break; case 5: - if ((0xf7ffffffffffffffL & l) == 0L) + if ((0xf7ffffffefffffffL & l) == 0L) break; if (kind > 1) kind = 1; Modified: tomcat/trunk/test/org/apache/el/TestELEvaluation.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/TestELEvaluation.java?rev=1702092&r1=1702091&r2=1702092&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/el/TestELEvaluation.java (original) +++ tomcat/trunk/test/org/apache/el/TestELEvaluation.java Wed Sep 9 19:30:52 2015 @@ -30,6 +30,7 @@ import static org.junit.Assert.assertNot import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import org.junit.Assert; import org.junit.Test; import org.apache.el.lang.ELSupport; @@ -207,6 +208,32 @@ public class TestELEvaluation { assertNotNull(e); } + @Test + public void testEscape01() { + Assert.assertEquals("$${", evaluateExpression("$\\${")); + } + + @Test + public void testBug49081a() { + Assert.assertEquals("$2", evaluateExpression("$${1+1}")); + } + + @Test + public void testBug49081b() { + Assert.assertEquals("#2", evaluateExpression("##{1+1}")); + } + + @Test + public void testBug49081c() { + Assert.assertEquals("#2", evaluateExpression("#${1+1}")); + } + + @Test + public void testBug49081d() { + Assert.assertEquals("$2", evaluateExpression("$#{1+1}")); + } + + // ************************************************************************ private String evaluateExpression(String expression) { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org