From 458f009de6ccb989ac565da62ac407f20755303e Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Sun, 04 Oct 2026 07:23:04 +0000
Subject: [PATCH] [#1156] Keep colons inside the -J/--control value, and report an unreadable control value file instead of failing with a NullPointerException (#1163)

---
 opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/LDAPSearchTestCase.java |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/LDAPSearchTestCase.java b/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/LDAPSearchTestCase.java
index f74170e..5fb16ca 100644
--- a/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/LDAPSearchTestCase.java
+++ b/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/LDAPSearchTestCase.java
@@ -12,6 +12,7 @@
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
  *  Copyright 2016 ForgeRock AS.
+ *  Portions Copyright 2026 3A Systems, LLC.
  */
 package com.forgerock.opendj.ldap.tools;
 
@@ -142,6 +143,11 @@
         argLists.add(args("-b", "", "-J", "1.2.3.4:invalidcriticality", "(objectClass=*)"));
         reasonList.add(ERR_TOOL_INVALID_CONTROL_STRING.get("1.2.3.4:invalidcriticality"));
 
+        argLists.add(args("-b", "", "-J", "1.2.3.4:true:<src/test/resources/no-such-control-value.ber",
+                          "(objectClass=*)"));
+        reasonList.add(ERR_TOOL_INVALID_CONTROL_STRING.get(
+                "1.2.3.4:true:<src/test/resources/no-such-control-value.ber"));
+
         argLists.add(args("-b", "", "-s", "invalid", "(objectClass=*)"));
         reasonList.add(ERR_MCARG_VALUE_NOT_ALLOWED.get("searchScope", "invalid"));
 
@@ -236,6 +242,12 @@
     }
 
     @Test
+    public void testLdapSearchWithControlValueHoldingColons() throws Exception {
+        controls.add(ProxiedAuthV2RequestControl.newControl("dn:uid=bjensen,ou=People,dc=example,dc=com"));
+        runToolOnMockedServer("-J", "2.16.840.1.113730.3.4.18:true:dn:uid=bjensen,ou=People,dc=example,dc=com");
+    }
+
+    @Test
     public void testLdapSearchWithSimplePaged() throws Exception {
         controls.add(SimplePagedResultsControl.newControl(true, 10, ByteString.empty()));
         runToolOnMockedServer("--simplePageSize", "10");

--
Gitblit v1.10.0