You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2014/05/11 20:25:29 UTC
svn commit: r1593836 - in /tomcat/tc6.0.x/trunk: ./ STATUS.txt
java/org/apache/el/parser/AstLiteralExpression.java
test/org/apache/el/TestELEvaluation.java
test/org/apache/jasper/compiler/TestELParser.java webapps/docs/changelog.xml
Author: kkolinko
Date: Sun May 11 18:25:29 2014
New Revision: 1593836
URL: http://svn.apache.org/r1593836
Log:
Correct the handling of back-slash escaping in the EL parser and no longer
require that "\$" or "\#" must be followed by "{" in order for the back-slash
escaping to take effect.
Modified:
tomcat/tc6.0.x/trunk/ (props changed)
tomcat/tc6.0.x/trunk/STATUS.txt
tomcat/tc6.0.x/trunk/java/org/apache/el/parser/AstLiteralExpression.java
tomcat/tc6.0.x/trunk/test/org/apache/el/TestELEvaluation.java
tomcat/tc6.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java
tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc6.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1590835,1590911,1593834
Merged /tomcat/tc7.0.x/trunk:r1590838,1590912,1593835
Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=1593836&r1=1593835&r2=1593836&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Sun May 11 18:25:29 2014
@@ -28,14 +28,6 @@ None
PATCHES PROPOSED TO BACKPORT:
[ New proposals should be added at the end of the list ]
-* Correct the handling of back-slash escaping in the EL parser and no longer
- require that "\$" or "\#" must be followed by "{" in order for the back-slash
- escaping to take effect.
- http://svn.apache.org/r1590838
- http://svn.apache.org/r1590912
- +1: markt, kkolinko, fhanik
- -1:
-
* Additional fixes for BZ 56334
http://svn.apache.org/r1590848
+1: kkolinko, markt, fhanik
Modified: tomcat/tc6.0.x/trunk/java/org/apache/el/parser/AstLiteralExpression.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/el/parser/AstLiteralExpression.java?rev=1593836&r1=1593835&r2=1593836&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/el/parser/AstLiteralExpression.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/el/parser/AstLiteralExpression.java Sun May 11 18:25:29 2014
@@ -49,10 +49,9 @@ public final class AstLiteralExpression
StringBuffer buf = new StringBuffer(size);
for (int i = 0; i < size; i++) {
char c = image.charAt(i);
- if (c == '\\' && i + 2 < size) {
+ if (c == '\\' && i + 1 < size) {
char c1 = image.charAt(i + 1);
- char c2 = image.charAt(i + 2);
- if ((c1 == '#' || c1 == '$') && c2 == '{') {
+ if (c1 == '#' || c1 == '$') {
c = c1;
i++;
}
Modified: tomcat/tc6.0.x/trunk/test/org/apache/el/TestELEvaluation.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/test/org/apache/el/TestELEvaluation.java?rev=1593836&r1=1593835&r2=1593836&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/test/org/apache/el/TestELEvaluation.java (original)
+++ tomcat/tc6.0.x/trunk/test/org/apache/el/TestELEvaluation.java Sun May 11 18:25:29 2014
@@ -73,8 +73,8 @@ public class TestELEvaluation extends Te
assertEquals("many", evaluateExpression(
"${0 lt 2 ? 1 lt 2 ? 'many': 'one': 'none'}"));
}
-
-
+
+
public void testParserBug45511() {
// Test cases provided by OP
assertEquals("true", evaluateExpression("${empty ('')}"));
@@ -102,14 +102,21 @@ public class TestELEvaluation extends Te
assertEquals("\\", evaluateExpression("\\"));
assertEquals("$", evaluateExpression("$"));
assertEquals("#", evaluateExpression("#"));
- assertEquals("\\$", evaluateExpression("\\$"));
- assertEquals("\\#", evaluateExpression("\\#"));
- assertEquals("\\\\$", evaluateExpression("\\\\$"));
- assertEquals("\\\\#", evaluateExpression("\\\\#"));
+ assertEquals("$", evaluateExpression("\\$"));
+ assertEquals("#", evaluateExpression("\\#"));
+ assertEquals("\\$", evaluateExpression("\\\\$"));
+ assertEquals("\\#", evaluateExpression("\\\\#"));
assertEquals("${", evaluateExpression("\\${"));
assertEquals("#{", evaluateExpression("\\#{"));
assertEquals("\\${", evaluateExpression("\\\\${"));
assertEquals("\\#{", evaluateExpression("\\\\#{"));
+
+ // '\' is only an escape for '$' and '#'.
+ assertEquals("$", evaluateExpression("\\$"));
+ assertEquals("${", evaluateExpression("\\${"));
+ assertEquals("$a", evaluateExpression("\\$a"));
+ assertEquals("\\a", evaluateExpression("\\a"));
+ assertEquals("\\\\", evaluateExpression("\\\\"));
}
public void testParserStringLiteral() {
@@ -171,6 +178,20 @@ public class TestELEvaluation extends Te
assertTrue(null == null);
}
+ /**
+ * Test mixing ${...} and #{...} in the same expression.
+ */
+ public void testMixedTypes() {
+ // Mixing types should throw an error
+ Exception e = null;
+ try {
+ evaluateExpression("${1+1}#{1+1}");
+ } catch (ELException el) {
+ e = el;
+ }
+ assertNotNull(e);
+ }
+
// ************************************************************************
private String evaluateExpression(String expression) {
Modified: tomcat/tc6.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java?rev=1593836&r1=1593835&r2=1593836&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java (original)
+++ tomcat/tc6.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java Sun May 11 18:25:29 2014
@@ -232,13 +232,13 @@ public class TestELParser {
@Test
public void testEscape04() throws JasperException {
- doTestParser("\\$", "\\$");
+ doTestParser("\\$", "$");
}
@Test
public void testEscape05() throws JasperException {
- doTestParser("\\#", "\\#");
+ doTestParser("\\#", "#");
}
Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=1593836&r1=1593835&r2=1593836&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Sun May 11 18:25:29 2014
@@ -163,6 +163,12 @@
<bug>56334</bug>: Fix a regression in the handling of back-slash
escaping introduced by the fix for <bug>55735</bug>. (markt)
</fix>
+ <fix>
+ Correct the handling of back-slash escaping in the EL parser and no
+ longer require that <code>\$</code> or <code>\#</code> must be followed
+ by <code>{</code> in order for the back-slash escaping to take effect.
+ (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Cluster">
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org