From 6de2021bbdcb749620a96093fc274db88f46b701 Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Wed, 22 Jun 2011 15:07:38 +0000
Subject: [PATCH] Fix issue OPENDJ-211. The value part of control specification is optional. And therefore there should be no : to finish the specification. Now if the specification ends with :, then it's the same as no value. Test added with the ManageDSAIt control.
---
opendj-sdk/opends/src/server/org/opends/server/tools/LDAPToolUtils.java | 6 ++++++
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPSearchTestCase.java | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPToolUtils.java b/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPToolUtils.java
index 5310fe2..3c2e805 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPToolUtils.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPToolUtils.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
+ * Portions Copyright 2011 ForgeRock AS
*/
package org.opends.server.tools;
import org.opends.messages.Message;
@@ -165,6 +166,11 @@
}
String valString = remainder.substring(idx+1, remainder.length());
+ if (valString.length() == 0)
+ {
+ control = new LDAPControl(controlOID, controlCriticality);
+ return control;
+ }
if(valString.charAt(0) == ':')
{
controlValue =
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPSearchTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPSearchTestCase.java
index 36754b7..b8d5646 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPSearchTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPSearchTestCase.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
+ * Portions Copyright 2011 ForgeRock AS
*/
package org.opends.server.tools;
@@ -2357,6 +2358,35 @@
assertFalse(LDAPSearch.mainSearch(args, false, null, null) == 0);
}
+ /**
+ * Tests the use of a control with an empty value.
+ * We use the ManageDSAIt control for this.
+ *
+ * @throws Exception If an unexpected problem occurs.
+ */
+ @Test()
+ public void testControlNoValue()
+ throws Exception
+ {
+ TestCaseUtils.initializeTestBackend(true);
+
+ String[] args =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "-b", "o=test",
+ "-s", "base",
+ "-J", "managedsait:false:",
+ "--noPropertiesFile",
+ "(objectClass=*)",
+ "dn"
+ };
+
+ assertTrue(LDAPSearch.mainSearch(args, false, null, null) == 0);
+ }
+
/**
@@ -2369,6 +2399,10 @@
public void testVLVWithoutSort()
throws Exception
{
+ // Test is supposed to fail in parsing arguments. But we do not
+ // want it to fail because there no backend to search in.
+ TestCaseUtils.clearJEBackend(true, "userRoot", "dc=example,dc=com");
+
String[] args =
{
"-h", "127.0.0.1",
--
Gitblit v1.10.0