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]