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 2012/08/28 01:11:21 UTC
svn commit: r1377909 - in /tomcat/tc7.0.x/trunk: ./
java/org/apache/coyote/http11/filters/ChunkedInputFilter.java
java/org/apache/tomcat/util/buf/HexUtils.java
test/org/apache/tomcat/util/buf/TestHexUtils.java webapps/docs/changelog.xml
Author: kkolinko
Date: Mon Aug 27 23:11:20 2012
New Revision: 1377909
URL: http://svn.apache.org/viewvc?rev=1377909&view=rev
Log:
Merged revision 1377900 from tomcat/trunk:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=42181
Better handling of edge conditions in chunk header processing.
Added:
tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/buf/TestHexUtils.java
- copied unchanged from r1377900, tomcat/trunk/test/org/apache/tomcat/util/buf/TestHexUtils.java
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/HexUtils.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Reverse-merged /tomcat/trunk:r1377904
Merged /tomcat/trunk:r1377900
Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java?rev=1377909&r1=1377908&r2=1377909&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java Mon Aug 27 23:11:20 2012
@@ -311,10 +311,11 @@ public class ChunkedInputFilter implemen
trailer = true;
} else if (!trailer) {
//don't read data after the trailer
- if (HexUtils.getDec(buf[pos]) != -1) {
+ int charValue = HexUtils.getDec(buf[pos]);
+ if (charValue != -1) {
readDigit = true;
result *= 16;
- result += HexUtils.getDec(buf[pos]);
+ result += charValue;
} else {
//we shouldn't allow invalid, non hex characters
//in the chunked header
Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/HexUtils.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/HexUtils.java?rev=1377909&r1=1377908&r2=1377909&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/HexUtils.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/HexUtils.java Mon Aug 27 23:11:20 2012
@@ -34,22 +34,10 @@ public final class HexUtils {
* Table for HEX to DEC byte translation.
*/
private static final int[] DEC = {
- -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, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00, 01, 02, 03, 04, 05, 06, 07, 8, 9, -1, -1, -1, -1, -1, -1,
-1, 10, 11, 12, 13, 14, 15, -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, 10, 11, 12, 13, 14, 15, -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, -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, -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, -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, -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, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 10, 11, 12, 13, 14, 15,
};
@@ -80,7 +68,12 @@ public final class HexUtils {
}
public static int getDec(int index){
- return DEC[index];
+ // Fast for correct values, slower for incorrect ones
+ try {
+ return DEC[index - '0'];
+ } catch (ArrayIndexOutOfBoundsException ex) {
+ return -1;
+ }
}
public static byte getHex(int index){
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1377909&r1=1377908&r2=1377909&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon Aug 27 23:11:20 2012
@@ -199,6 +199,10 @@
shutdown. (markt)
</fix>
<fix>
+ <bug>42181</bug>: Better handling of edge conditions in chunk header
+ processing. (kkolinko)
+ </fix>
+ <fix>
<bug>53697</bug>: Correct a regression in the fix for <bug>51881</bug>
that mean that in some circumstances the <code>comet</code> flag was not
reset on <code>HttpAprProcessor</code> instances. This caused problems
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org