From e3aa6ebbae71bab7b16a9ace419ad3370eed71c1 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Thu, 09 Apr 2009 09:18:07 +0000
Subject: [PATCH] Fix for issue 2642 (ldif-diff doesn't detect differences in encoded values)

---
 opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java
index 11d9a42..36bd930 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Copyright 2006-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.schema;
 
@@ -148,7 +148,20 @@
     if (UserPasswordSyntax.isEncoded(value))
     {
       StringBuilder builder = new StringBuilder(value.length());
-      StaticUtils.toLowerCase(value, builder, false);
+      int closingBracePos = -1;
+      for (int i=1; i < value.length(); i++)
+      {
+        if (value.byteAt(i) == '}')
+        {
+          closingBracePos = i;
+          break;
+        }
+      }
+      ByteSequence seq1 = value.subSequence(0, closingBracePos + 1);
+      ByteSequence seq2 =
+        value.subSequence(closingBracePos + 1, value.length());
+      StaticUtils.toLowerCase(seq1, builder, false);
+      builder.append(seq2);
       return ByteString.valueOf(builder.toString());
     }
     else

--
Gitblit v1.10.0