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 2020/06/30 13:21:19 UTC

[tomcat] 01/02: Correct calculation of payload length when using 4 or more bytes

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org