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: [email protected]
For additional commands, e-mail: [email protected]