From 5adf347d468c93b593cf48883eacfa94ee8b2839 Mon Sep 17 00:00:00 2001
From: Chris Ridd <chris.ridd@forgerock.com>
Date: Mon, 12 Oct 2015 15:47:07 +0000
Subject: [PATCH] OPENDJ-2339 Avoid double escaping RDN values

---
 opendj-core/src/test/java/org/forgerock/opendj/ldap/RDNTestCase.java    |   14 +++++++++++++-
 opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java |   14 +++++++++++++-
 opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java     |    3 +++
 3 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/opendj-core/src/test/java/org/forgerock/opendj/ldap/RDNTestCase.java b/opendj-core/src/test/java/org/forgerock/opendj/ldap/RDNTestCase.java
index 04d6eae..6c5d75d 100644
--- a/opendj-core/src/test/java/org/forgerock/opendj/ldap/RDNTestCase.java
+++ b/opendj-core/src/test/java/org/forgerock/opendj/ldap/RDNTestCase.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2010 Sun Microsystems, Inc.
- *      Portions copyright 2011 ForgeRock AS.
+ *      Portions copyright 2011-2015 ForgeRock AS.
  */
 
 package org.forgerock.opendj.ldap;
@@ -417,6 +417,18 @@
     }
 
     /**
+     * Test escaping of single space values.
+     *
+     * @throws Exception
+     *             If the test failed unexpectedly.
+     */
+    @Test
+    public void testEscaping() {
+        RDN rdn = new RDN(ATTR_TYPE_DC, ByteString.valueOf(" "));
+        assertEquals(rdn.toString(), "dc=\\ ");
+    }
+
+    /**
      * Test RDN hashCode
      *
      * @param first
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java b/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java
index 1313941..3dd47b1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java
@@ -497,6 +497,9 @@
     if (c == ' ' || c == '#') {
       buffer.append('\\');
       buffer.append(c);
+      if (length == 1) {
+        return buffer.toString();
+      }
       start = 1;
     }
 
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java b/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java
index af99e20..4356c6a 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java
@@ -55,7 +55,6 @@
   private ByteString AV_CN;
 
 
-
   /**
    * Set up the environment for performing the tests in this suite.
    *
@@ -182,6 +181,19 @@
 
 
   /**
+   * Test escaping of single space values.
+   *
+   * @throws Exception  If the test failed unexpectedly.
+   */
+  @Test
+  public void testEscaping() {
+    RDN rdn = new RDN(AT_DC, ByteString.valueOf(" "));
+    assertEquals(rdn.toString(), "dc=\\ ");
+  }
+
+
+
+  /**
    * RDN test data provider.
    *
    * @return The array of test RDN strings.

--
Gitblit v1.10.0