From 54143638bba7ed32a3384cd5683877605ee79b4e Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Tue, 29 May 2012 19:24:25 +0000
Subject: [PATCH] Fix OPENDJ-504: Performing Query on telephoneNumber attribute thats not a number returns all entries. Throw an exception when normalized value of a substring is empty, rather than using it. Solves the use case described in the bug.

---
 opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java
index 955eddc..3855412 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2006-2009 Sun Microsystems, Inc.
+ *      Portions Copyright 2012 ForgeRock AS
  */
 package org.opends.server.schema;
 
@@ -33,11 +34,13 @@
 
 import java.util.Collection;
 import java.util.Collections;
+import org.opends.messages.Message;
 
 import org.opends.server.api.SubstringMatchingRule;
 import org.opends.server.types.ByteSequence;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DirectoryException;
+import org.opends.server.types.ResultCode;
 
 
 
@@ -182,7 +185,13 @@
   {
     // In this case, the logic used to normalize a substring is identical to the
     // logic used to normalize a full value.
-    return normalizeValue(substring);
+    ByteString value = normalizeValue(substring);
+    if (value.length() == 0)
+    {
+      throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
+          Message.EMPTY);
+    }
+    return value;
   }
 }
 

--
Gitblit v1.10.0