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 2012/03/23 11:43:17 UTC

svn commit: r1304275 - in /tomcat/trunk/java/org/apache/tomcat/util/http/parser: AstMediaType.java HttpParser.java HttpParser.jjt HttpParserConstants.java HttpParserTokenManager.java

Author: markt
Date: Fri Mar 23 10:43:17 2012
New Revision: 1304275

URL: http://svn.apache.org/viewvc?rev=1304275&view=rev
Log:
kkolinko review of r1300154
Correctly parse quoted-pair
'charset' parameter name should be case insensitive

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/AstMediaType.java
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.jjt
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParserConstants.java
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParserTokenManager.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/AstMediaType.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/AstMediaType.java?rev=1304275&r1=1304274&r2=1304275&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/AstMediaType.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/AstMediaType.java Fri Mar 23 10:43:17 2012
@@ -21,6 +21,9 @@ package org.apache.tomcat.util.http.pars
  * by <a href="http://javacc.java.net/doc/JJTree.html"> JJTree</a>.
  */
 public class AstMediaType extends SimpleNode {
+
+    private static final String CHARSET = "charset";
+
     public AstMediaType(int id) {
         super(id);
     }
@@ -33,10 +36,10 @@ public class AstMediaType extends Simple
     public String toString() {
         StringBuilder sb = new StringBuilder();
         sb.append(children[0].toString());
-        sb.append("/");
+        sb.append('/');
         sb.append(children[1].toString());
         for (int i = 2; i < children.length; i++) {
-            sb.append(";");
+            sb.append(';');
             sb.append(children[i].toString());
         }
         return sb.toString();
@@ -45,12 +48,13 @@ public class AstMediaType extends Simple
     public String toStringNoCharset() {
         StringBuilder sb = new StringBuilder();
         sb.append(children[0].toString());
-        sb.append("/");
+        sb.append('/');
         sb.append(children[1].toString());
         for (int i = 2; i < children.length; i++) {
             AstParameter p = (AstParameter) children[i];
-            if (!"charset".equals(p.children[0].jjtGetValue())) {
-                sb.append(";");
+            if (!CHARSET.equals(
+                    p.children[0].jjtGetValue().toString().toLowerCase())) {
+                sb.append(';');
                 sb.append(p.toString());
             }
         }
@@ -60,7 +64,8 @@ public class AstMediaType extends Simple
     public String getCharset() {
         for (int i = 2; i < children.length; i++) {
             AstParameter p = (AstParameter) children[i];
-            if ("charset".equals(p.children[0].jjtGetValue())) {
+            if (CHARSET.equals(
+                    p.children[0].jjtGetValue().toString().toLowerCase())) {
                 return p.children[1].jjtGetValue().toString();
             }
         }

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java?rev=1304275&r1=1304274&r2=1304275&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java Fri Mar 23 10:43:17 2012
@@ -302,7 +302,7 @@ public class HttpParser/*@bgen(jjtree)*/
   /** Generate ParseException. */
   public ParseException generateParseException() {
     jj_expentries.clear();
-    boolean[] la1tokens = new boolean[14];
+    boolean[] la1tokens = new boolean[15];
     if (jj_kind >= 0) {
       la1tokens[jj_kind] = true;
       jj_kind = -1;
@@ -316,7 +316,7 @@ public class HttpParser/*@bgen(jjtree)*/
         }
       }
     }
-    for (int i = 0; i < 14; i++) {
+    for (int i = 0; i < 15; i++) {
       if (la1tokens[i]) {
         jj_expentry = new int[1];
         jj_expentry[0] = i;

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.jjt
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.jjt?rev=1304275&r1=1304274&r2=1304275&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.jjt (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.jjt Fri Mar 23 10:43:17 2012
@@ -119,7 +119,7 @@ void Value() #Value : { Token t = null; 
 
 <IN_QUOTED_TEXT> TOKEN :
 {
-  < #QUOTED_TEXT :   (("\\" (<QUOTED_TEXT_CHAR> | "\"")) | <QUOTED_TEXT_CHAR>)* >
+  < #QUOTED_TEXT :   (<QUOTED_TEXT_CHAR> | ("\\" <CHAR> ))* >
 | < #END_QUOTE :     "\"" >
 | < #QUOTED_TEXT_CHAR:
      [
@@ -129,4 +129,9 @@ void Value() #Value : { Token t = null; 
      "\u005d"-"\u00ff"
      ]
   >
+| < #CHAR:
+     [
+     "\u0000"-"\u007f"
+     ]
+  >
 }
\ No newline at end of file

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParserConstants.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParserConstants.java?rev=1304275&r1=1304274&r2=1304275&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParserConstants.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParserConstants.java Fri Mar 23 10:43:17 2012
@@ -36,6 +36,8 @@ public interface HttpParserConstants {
   int END_QUOTE = 12;
   /** RegularExpression Id. */
   int QUOTED_TEXT_CHAR = 13;
+  /** RegularExpression Id. */
+  int CHAR = 14;
 
   /** Lexical state. */
   int DEFAULT = 0;
@@ -58,6 +60,7 @@ public interface HttpParserConstants {
     "<QUOTED_TEXT>",
     "\"\\\"\"",
     "<QUOTED_TEXT_CHAR>",
+    "<CHAR>",
   };
 
 }

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParserTokenManager.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParserTokenManager.java?rev=1304275&r1=1304274&r2=1304275&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParserTokenManager.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParserTokenManager.java Fri Mar 23 10:43:17 2012
@@ -141,13 +141,12 @@ private int jjMoveNfa_0(int startState, 
                   if (curChar == 34)
                      jjCheckNAddStates(0, 2);
                   break;
-               case 4:
-                  if ((0xffffffff00000200L & l) != 0L)
+               case 3:
+                  if ((0xfffffffb00000200L & l) != 0L)
                      jjCheckNAddStates(0, 2);
                   break;
                case 5:
-                  if ((0xfffffffb00000200L & l) != 0L)
-                     jjCheckNAddStates(0, 2);
+                  jjCheckNAddStates(0, 2);
                   break;
                case 6:
                   if (curChar != 34)
@@ -193,7 +192,7 @@ private int jjMoveNfa_0(int startState, 
                   if ((0xffffffffefffffffL & l) != 0L)
                      jjCheckNAddStates(0, 2);
                   else if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 4;
+                     jjstateSet[jjnewStateCnt++] = 5;
                   break;
                case 12:
                case 0:
@@ -211,16 +210,15 @@ private int jjMoveNfa_0(int startState, 
                   jjCheckNAddTwoStates(0, 1);
                   break;
                case 3:
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 4;
-                  break;
-               case 4:
                   if ((0xffffffffefffffffL & l) != 0L)
                      jjCheckNAddStates(0, 2);
                   break;
+               case 4:
+                  if (curChar == 92)
+                     jjstateSet[jjnewStateCnt++] = 5;
+                  break;
                case 5:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                     jjCheckNAddStates(0, 2);
+                  jjCheckNAddStates(0, 2);
                   break;
                default : break;
             }
@@ -238,8 +236,7 @@ private int jjMoveNfa_0(int startState, 
             switch(jjstateSet[--i])
             {
                case 13:
-               case 5:
-               case 4:
+               case 3:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
                      jjCheckNAddStates(0, 2);
                   break;
@@ -265,7 +262,7 @@ private int jjMoveStringLiteralDfa0_1()
    return 1;
 }
 static final int[] jjnextStates = {
-   3, 5, 6, 9, 10, 0, 11, 2,
+   3, 4, 6, 9, 10, 0, 11, 2,
 };
 private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
 {
@@ -281,7 +278,7 @@ private static final boolean jjCanMove_0
 /** Token literal values. */
 public static final String[] jjstrLiteralImages = {
 "", "\73", "\75", "\57", "\40", "\11", null, null, null, "\42", null, null,
-null, null, };
+null, null, null, };
 
 /** Lexer state names. */
 public static final String[] lexStateNames = {
@@ -291,7 +288,7 @@ public static final String[] lexStateNam
 
 /** Lex State array. */
 public static final int[] jjnewLexState = {
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1,
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1,
 };
 protected SimpleCharStream input_stream;
 private final int[] jjrounds = new int[12];



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