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/ASN1InputStreamReader.java | 22 +++++++++++++++++-----
1 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/asn1/ASN1InputStreamReader.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/asn1/ASN1InputStreamReader.java
index 56e838c..f3a7e86 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/asn1/ASN1InputStreamReader.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/protocols/asn1/ASN1InputStreamReader.java
@@ -765,14 +765,26 @@
throw new ASN1Exception(message);
}
- // If not everything was read, throw error
+ // Ignore all unused trailing components.
SizeLimitInputStream subSq = (SizeLimitInputStream)in;
if(subSq.getSizeLimit() - subSq.getBytesRead() > 0)
{
- Message message =
- ERR_ASN1_SEQUENCE_READ_NOT_ENDED.get(subSq.getSizeLimit() -
- subSq.getBytesRead(), subSq.getSizeLimit());
- throw new ASN1Exception(message);
+ if(debugEnabled())
+ {
+ TRACER.debugWarning("Ignoring %d unused trailing bytes in " +
+ "ASN.1 SEQUENCE", subSq.getSizeLimit() - subSq.getBytesRead());
+ }
+
+ try
+ {
+ subSq.skip(subSq.getSizeLimit() - subSq.getBytesRead());
+ }
+ catch(IOException ioe)
+ {
+ Message message =
+ ERR_ASN1_READ_ERROR.get(ioe.toString());
+ throw new ASN1Exception(message, ioe);
+ }
}
in = streamStack.removeFirst();
--
Gitblit v1.10.0