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