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