This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit b51700209311c352e1c35d7845237da7a435b06b
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Tue Jun 30 14:18:55 2020 +0100

    Correct calculation of payload length when using 4 or more bytes
---
 java/org/apache/catalina/util/Conversions.java     |  2 +-
 test/org/apache/catalina/util/TestConversions.java | 12 ++++++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/java/org/apache/catalina/util/Conversions.java 
b/java/org/apache/catalina/util/Conversions.java
index 322fdbb..b98c2d0 100644
--- a/java/org/apache/catalina/util/Conversions.java
+++ b/java/org/apache/catalina/util/Conversions.java
@@ -33,7 +33,7 @@ public class Conversions {
         int shift = 0;
         long result = 0;
         for (int i = input.length - 1; i >= 0; i--) {
-            result = result + ((input[i] & 0xFF) << shift);
+            result = result + ((input[i] & 0xFFL) << shift);
             shift += 8;
         }
 
diff --git a/test/org/apache/catalina/util/TestConversions.java 
b/test/org/apache/catalina/util/TestConversions.java
index fae4f8b..a9a228b 100644
--- a/test/org/apache/catalina/util/TestConversions.java
+++ b/test/org/apache/catalina/util/TestConversions.java
@@ -28,10 +28,14 @@ public class TestConversions {
         Assert.assertEquals(0L, Conversions.byteArrayToLong(new byte[] { 0 }));
         Assert.assertEquals(1L, Conversions.byteArrayToLong(new byte[] { 1 }));
         Assert.assertEquals(0xFF, Conversions.byteArrayToLong(new byte[] { -1 
}));
-        Assert.assertEquals(0xFFFF,
-                Conversions.byteArrayToLong(new byte[] { -1, -1 }));
-        Assert.assertEquals(0xFFFFFF,
-                Conversions.byteArrayToLong(new byte[] { -1, -1, -1 }));
+        Assert.assertEquals(0xFFFF, Conversions.byteArrayToLong(new byte[] { 
-1, -1 }));
+        Assert.assertEquals(0xFFFFFF, Conversions.byteArrayToLong(new byte[] { 
-1, -1, -1 }));
+        Assert.assertEquals(0xFFFFFFFFL, Conversions.byteArrayToLong(new 
byte[] { -1, -1, -1, -1 }));
+        Assert.assertEquals(0xFFFFFFFFFFL, Conversions.byteArrayToLong(new 
byte[] { -1, -1, -1, -1, -1 }));
+        Assert.assertEquals(0xFFFFFFFFFFFFL, Conversions.byteArrayToLong(new 
byte[] { -1, -1, -1, -1, -1, -1 }));
+        Assert.assertEquals(0xFFFFFFFFFFFFFFL, Conversions.byteArrayToLong(new 
byte[] { -1, -1, -1, -1, -1, -1, -1 }));
+        Assert.assertEquals(0x7FFFFFFFFFFFFFFFL, 
Conversions.byteArrayToLong(new byte[] {127, -1, -1, -1, -1, -1, -1, -1 }));
+        Assert.assertEquals(-1, Conversions.byteArrayToLong(new byte[] { -1, 
-1, -1, -1, -1, -1, -1, -1 }));
     }
 
 }


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

Reply via email to