From 5ef5b7ebec21ac99a61466cf5861b7d301bc7da0 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.

---
 opends/src/server/org/opends/server/crypto/GetSymmetricKeyExtendedOperation.java |   27 +++++++++------------------
 1 files changed, 9 insertions(+), 18 deletions(-)

diff --git a/opends/src/server/org/opends/server/crypto/GetSymmetricKeyExtendedOperation.java b/opends/src/server/org/opends/server/crypto/GetSymmetricKeyExtendedOperation.java
index 6f8377d..e866da7 100644
--- a/opends/src/server/org/opends/server/crypto/GetSymmetricKeyExtendedOperation.java
+++ b/opends/src/server/org/opends/server/crypto/GetSymmetricKeyExtendedOperation.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.server.crypto;
@@ -168,24 +168,15 @@
     {
       ASN1Reader reader = ASN1.getReader(requestValue);
       reader.readStartSequence();
-      while(reader.hasNextElement())
+      if(reader.hasNextElement() &&
+          reader.peekType() == TYPE_SYMMETRIC_KEY_ELEMENT)
       {
-        switch (reader.peekType())
-        {
-          case TYPE_SYMMETRIC_KEY_ELEMENT:
-            requestSymmetricKey = reader.readOctetStringAsString();
-            break;
-
-          case TYPE_INSTANCE_KEY_ID_ELEMENT:
-            instanceKeyID = reader.readOctetStringAsString();
-            break;
-
-          default:
-            Message message = ERR_GET_SYMMETRIC_KEY_INVALID_TYPE.get(
-                 StaticUtils.byteToHex(reader.peekType()));
-            operation.appendErrorMessage(message);
-            return;
-        }
+        requestSymmetricKey = reader.readOctetStringAsString();
+      }
+      if(reader.hasNextElement() &&
+          reader.peekType() == TYPE_INSTANCE_KEY_ID_ELEMENT)
+      {
+        instanceKeyID = reader.readOctetStringAsString();
       }
       reader.readEndSequence();
     }

--
Gitblit v1.10.0