From 13fed9d155554880852ee313b65f5b5a4fa0db3d Mon Sep 17 00:00:00 2001
From: vharseko <vharseko@3a-systems.ru>
Date: Tue, 29 Aug 2023 15:09:45 +0000
Subject: [PATCH] FIX unused trailing bytes in ASN.1 SEQUENCE (#296)
---
opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/ASN1BufferReader.java | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/ASN1BufferReader.java b/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/ASN1BufferReader.java
index 86c5b54..4610407 100644
--- a/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/ASN1BufferReader.java
+++ b/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/ASN1BufferReader.java
@@ -35,7 +35,13 @@
/** Grizzly ASN1 reader implementation. */
final class ASN1BufferReader extends AbstractASN1Reader {
private final class ChildSequenceLimiter implements SequenceLimiter {
- private SequenceLimiter parent;
+ @Override
+ public String toString() {
+ return "ChildSequenceLimiter [parent=" + parent + ", child=" + child + ", readLimit=" + readLimit
+ + ", bytesRead=" + bytesRead + ", remaining()=" + remaining() + "]";
+ }
+
+ private SequenceLimiter parent;
private ChildSequenceLimiter child;
private int readLimit;
private int bytesRead;
@@ -55,7 +61,7 @@
parent.checkLimit(remaining());
if (remaining() > 0) {
logger.debug(LocalizableMessage.raw(
- "Ignoring %d unused trailing bytes in ASN.1 SEQUENCE", remaining()));
+ "Ignoring %d unused trailing bytes in ASN.1 SEQUENCE: %s", remaining(),toString()));
}
for (int i = 0; i < remaining(); i++) {
buffer.get();
@@ -81,11 +87,16 @@
}
private final class RootSequenceLimiter implements SequenceLimiter {
- private ChildSequenceLimiter child;
+ @Override
+ public String toString() {
+ return "RootSequenceLimiter [remaining()=" + remaining() + "]";
+ }
+
+ private ChildSequenceLimiter child;
@Override
public void checkLimit(final int readSize) throws IOException {
- if (buffer.remaining() < readSize) {
+ if ( remaining() < readSize) {
final LocalizableMessage message = ERR_ASN1_TRUNCATED_LENGTH_BYTE.get();
throw DecodeException.fatalError(message);
}
@@ -99,7 +110,7 @@
@Override
public int remaining() {
- return buffer.remaining();
+ return buffer.hasRemaining() ? buffer.remaining() : 0;
}
@Override
--
Gitblit v1.10.0