From 781be434057128dfd434a1879963d6dd35fdf7b1 Mon Sep 17 00:00:00 2001
From: Chris Ridd <chris.ridd@forgerock.com>
Date: Wed, 17 Oct 2012 09:23:54 +0000
Subject: [PATCH] Fix OPENDJ-608 DSML gateway NPE in response to extended requests without request values
---
opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java | 24 ++++++++++++++++++++++--
1 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java b/opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java
index b21dbcf..9dba5eb 100644
--- a/opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java
+++ b/opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
+ * Portions Copyright 2012 ForgeRock AS.
*/
package org.opends.dsml.protocol;
@@ -86,7 +87,19 @@
String requestName = extendedRequest.getRequestName();
Object value = extendedRequest.getRequestValue();
- ByteString asnValue = ByteString.valueOf(value.toString());
+ ByteString asnValue = null;
+ // value is optional in the request
+ if (value != null)
+ {
+ if (value instanceof byte [])
+ {
+ asnValue = ByteString.wrap((byte [])value);
+ }
+ else
+ {
+ asnValue = ByteString.valueOf(value.toString());
+ }
+ }
// Create and send the LDAP request to the server.
ProtocolOp op = new ExtendedRequestProtocolOp(requestName, asnValue);
@@ -103,7 +116,14 @@
// Set the result code and error message for the DSML response.
extendedResponse.setResponseName(extendedOp.getOID());
- extendedResponse.setResponse(extendedOp.getValue());
+
+ asnValue = extendedOp.getValue();
+ value = null;
+ if (asnValue != null)
+ {
+ value = asnValue.toByteArray();
+ }
+ extendedResponse.setResponse(value);
extendedResponse.setErrorMessage(
errorMessage != null ? errorMessage.toString() : null);
ResultCode code = objFactory.createResultCode();
--
Gitblit v1.10.0