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

jfclere pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/main by this push:
     new 596c8e61e3 Fix the size logic: It is 1 byte if len<128 and 1 + size of 
len bytes.
596c8e61e3 is described below

commit 596c8e61e3bbc9fcc1268dc67e98beefdc67c55e
Author: Jean-Frederic Clere <[email protected]>
AuthorDate: Tue Sep 30 08:53:44 2025 +0200

    Fix the size logic:
    It is 1 byte if len<128 and 1 + size of len bytes.
---
 java/org/apache/tomcat/util/buf/Asn1Writer.java | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/java/org/apache/tomcat/util/buf/Asn1Writer.java 
b/java/org/apache/tomcat/util/buf/Asn1Writer.java
index 57b36c3847..4da8f13d94 100644
--- a/java/org/apache/tomcat/util/buf/Asn1Writer.java
+++ b/java/org/apache/tomcat/util/buf/Asn1Writer.java
@@ -71,21 +71,25 @@ public class Asn1Writer {
             } while ((dataSize >> (lengthSize * 8)) > 0);
         }
 
-        // 1 for tag + lengthSize + dataSize
-        byte[] result = new byte[1 + lengthSize + dataSize];
-        result[0] = tagId;
+        byte[] result;
         if (dataSize < 128) {
+            // 1 for tag + lengthSize + dataSize
+            result = new byte[1 + lengthSize + dataSize];
             result[1] = (byte) dataSize;
         } else {
             // lengthSize is 1 + number of bytes for length
-            result[1] = (byte) (127 + lengthSize);
+            // 1 for tag + one for the lengthSize + lengthSize + dataSize
+            result = new byte[2 + lengthSize + dataSize];
+            result[1] = (byte) (128 + lengthSize);
             int i = lengthSize;
             while (dataSize > 0) {
-                result[i] = (byte) (dataSize & 0xFF);
+                result[i+1] = (byte) (dataSize & 0xFF);
                 dataSize = dataSize >> 8;
                 i--;
             }
+            lengthSize++; // we added the size.
         }
+        result[0] = tagId;
 
         System.arraycopy(data, 0, result, 1 + lengthSize, data.length);
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to