From 14c8bca1f415a6a6a6cd27cec775c2d1e52427aa Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Fri, 01 May 2009 01:14:55 +0000
Subject: [PATCH] Second fix for issue 3949: All ASN.1 parsing code now ignores trailing unrecognized SEQUENCE components.

---
 opendj-sdk/opends/src/server/org/opends/server/protocols/asn1/ASN1ByteSequenceReader.java |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/asn1/ASN1ByteSequenceReader.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/asn1/ASN1ByteSequenceReader.java
index 7d8d608..921a4fc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/asn1/ASN1ByteSequenceReader.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/protocols/asn1/ASN1ByteSequenceReader.java
@@ -36,12 +36,17 @@
 import org.opends.server.types.ByteSequenceReader;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ByteStringBuilder;
+import org.opends.server.loggers.debug.DebugTracer;
+import static org.opends.server.loggers.debug.DebugLogger.getTracer;
+import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 
 /**
  * An ASN.1 reader that reads from a {@link ByteSequenceReader}.
  */
 final class ASN1ByteSequenceReader implements ASN1Reader
 {
+  private static final DebugTracer TRACER = getTracer();
+
   private int state = ELEMENT_READ_STATE_NEED_TYPE;
   private byte peekType = 0;
   private int peekLength = -1;
@@ -473,11 +478,10 @@
       throw new ASN1Exception(message);
     }
 
-    if(reader.remaining() > 0)
+    if(reader.remaining() > 0 && debugEnabled())
     {
-      Message message =
-          ERR_ASN1_SEQUENCE_READ_NOT_ENDED.get(reader.remaining(), peekLength);
-      throw new ASN1Exception(message);
+      TRACER.debugWarning("Ignoring %d unused trailing bytes in " +
+          "ASN.1 SEQUENCE", reader.remaining());
     }
 
     reader = readerStack.removeFirst();

--
Gitblit v1.10.0