Author: markt
Date: Sun Oct 12 10:01:51 2014
New Revision: 1631156

URL: http://svn.apache.org/r1631156
Log:
Fix regression in filtering. byte is signed, not unsigned.

Modified:
    tomcat/trunk/java/org/apache/coyote/ajp/AjpMessage.java
    tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpMessage.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpMessage.java?rev=1631156&r1=1631155&r2=1631156&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpMessage.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpMessage.java Sun Oct 12 10:01:51 
2014
@@ -166,8 +166,13 @@ public class AjpMessage {
             // corrupted.
             byte[] buffer = bc.getBuffer();
             for (int i = bc.getOffset(); i < bc.getLength(); i++) {
-                if (((buffer[i] <= 31) && (buffer[i] != 9)) ||
-                        buffer[i] == 127 || buffer[i] > 255) {
+                // byte values are signed i.e. -128 to 127
+                // The values are used unsigned. 0 to 31 are CTLs so they are
+                // filtered (apart from TAB which is 9). 127 is a control 
(DEL).
+                // The values 128 to 255 are all OK. Converting those to signed
+                // gives -128 to -1.
+                if ((buffer[i] > -1 && buffer[i] <= 31 && buffer[i] != 9) ||
+                        buffer[i] == 127) {
                     buffer[i] = ' ';
                 }
             }

Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java?rev=1631156&r1=1631155&r2=1631156&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java Sun 
Oct 12 10:01:51 2014
@@ -495,8 +495,13 @@ public abstract class AbstractOutputBuff
             // corrupted.
             byte[] buffer = bc.getBuffer();
             for (int i = bc.getOffset(); i < bc.getLength(); i++) {
-                if (((buffer[i] <= 31) && (buffer[i] != 9)) ||
-                        buffer[i] == 127 || buffer[i] > 255) {
+                // byte values are signed i.e. -128 to 127
+                // The values are used unsigned. 0 to 31 are CTLs so they are
+                // filtered (apart from TAB which is 9). 127 is a control 
(DEL).
+                // The values 128 to 255 are all OK. Converting those to signed
+                // gives -128 to -1.
+                if ((buffer[i] > -1 && buffer[i] <= 31 && buffer[i] != 9) ||
+                        buffer[i] == 127) {
                     buffer[i] = ' ';
                 }
             }



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

Reply via email to