You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/09/30 15:13:31 UTC

svn commit: r1628430 - in /tomcat/tc6.0.x/trunk: STATUS.txt java/org/apache/jasper/compiler/ELParser.java test/org/apache/jasper/compiler/TestELParser.java webapps/docs/changelog.xml

Author: markt
Date: Tue Sep 30 13:13:30 2014
New Revision: 1628430

URL: http://svn.apache.org/r1628430
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56334#c15
Fix a regression in EL parsing when quoted string follows a whitespace.

Modified:
    tomcat/tc6.0.x/trunk/STATUS.txt
    tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/ELParser.java
    tomcat/tc6.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java
    tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=1628430&r1=1628429&r2=1628430&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Tue Sep 30 13:13:30 2014
@@ -28,12 +28,6 @@ None
 PATCHES PROPOSED TO BACKPORT:
   [ New proposals should be added at the end of the list ]
 
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56334#c15
-  Fix a regression in EL parsing when quoted string follows a whitespace.
-  http://people.apache.org/~markt/patches/2014-06-18-bug56334%23c15-tc6-v1.patch
-  +1: markt, kkolinko, remm
-  -1:
-
 * Assert that MappingData object is empty before performing mapping work.
   It is backport of r1604663
 

Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/ELParser.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/ELParser.java?rev=1628430&r1=1628429&r2=1628430&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/ELParser.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/ELParser.java Tue Sep 30 13:13:30 2014
@@ -291,30 +291,34 @@ public class ELParser {
         int len = input.length();
         char quote = 0;
         int lastAppend = 0;
-
-        if (len > 1) {
+        int start = 0;
+        int end = len;
+        
+        // Look to see if the value is quoted
+        String trimmed = input.trim();
+        int trimmedLen = trimmed.length();
+        if (trimmedLen > 1) {
             // Might be quoted
-            quote = input.charAt(0);
+            quote = trimmed.charAt(0);
             if (quote == '\'' || quote == '\"') {
-                if (input.charAt(len - 1) != quote) {
+                if (trimmed.charAt(trimmedLen - 1) != quote) {
                     throw new IllegalArgumentException(Localizer.getMessage(
                             "org.apache.jasper.compiler.ELParser.invalidQuotesForStringLiteral",
                             input));
                 }
-                lastAppend = 1;
-                len--;
+                start = input.indexOf(quote) + 1;
+                end = start + trimmedLen - 2;
             } else {
                 quote = 0;
             }
         }
 
         StringBuilder output = null;
-        for (int i = lastAppend; i < len; i++) {
+        for (int i = start; i < end; i++) {
             char ch = input.charAt(i);
             if (ch == '\\' || ch == quote) {
                 if (output == null) {
                     output = new StringBuilder(len + 20);
-                    output.append(quote);
                 }
                 output.append(input.substring(lastAppend, i));
                 lastAppend = i + 1;
@@ -326,9 +330,6 @@ public class ELParser {
             return input;
         } else {
             output.append(input.substring(lastAppend, len));
-            if (quote != 0) {
-                output.append(quote);
-            }
             return output.toString();
         }
     }

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=1628430&r1=1628429&r2=1628430&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 Tue Sep 30 13:13:30 2014
@@ -92,6 +92,12 @@ public class TestELParser {
 
 
     @Test
+    public void testFunction05() throws JasperException {
+        doTestParser("${do:it(x, '\\\\y',z)}", null);
+    }
+
+
+    @Test
     public void testCompound01() throws JasperException {
         doTestParser("1${'foo'}1", "1foo1");
     }

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=1628430&r1=1628429&r2=1628430&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Tue Sep 30 13:13:30 2014
@@ -78,6 +78,10 @@
   <subsection name="Jasper">
     <changelog>
       <fix>
+        <bug>56334</bug>: Fix a regression in EL parsing when quoted string
+        follows a whitespace. (markt)
+      </fix>
+      <fix>
         <bug>56560</bug>: Fix NoClassDefFoundError when using Jasper Ant task
         defined by <code>catalina-tasks.xml</code> file. Patch provided by
         M Gemmell. (kkolinko)



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