From e48662d1b83000b89f3eea13f16acab22f40b1bb Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Sun, 18 Feb 2007 07:26:16 +0000
Subject: [PATCH] Fix a bug in SearchFilter.equals() in which substring filter components are only compared by their assertion values and the attribute type isn't taken into account (so the filters "(cn=*bowen*)" and "(sn=*bowen*)" would be considered equal when they shouldn't be).

---
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/SearchFilterTests.java |    3 +++
 opendj-sdk/opends/src/server/org/opends/server/types/SearchFilter.java                              |    7 ++++++-
 2 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/SearchFilter.java b/opendj-sdk/opends/src/server/org/opends/server/types/SearchFilter.java
index d9c626d..9f06cfe 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/SearchFilter.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/SearchFilter.java
@@ -3595,6 +3595,11 @@
         return (attributeType.equals(f.attributeType) &&
                 assertionValue.equals(f.assertionValue));
       case SUBSTRING:
+        if (! attributeType.equals(f.attributeType))
+        {
+          return false;
+        }
+
         if (subInitialElement == null)
         {
           if (f.subInitialElement != null)
@@ -3734,7 +3739,7 @@
       case EQUALITY:
         return (attributeType.hashCode() + assertionValue.hashCode());
       case SUBSTRING:
-        hashCode = 0;
+        hashCode = attributeType.hashCode();
 
         if (subInitialElement != null)
         {
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/SearchFilterTests.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/SearchFilterTests.java
index 2536fbf..1c1b251 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/SearchFilterTests.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/SearchFilterTests.java
@@ -1097,6 +1097,9 @@
           {"(|(sn=Smith)(sn<=Aus))", "(|(sn=Smith)(sn>=Aus))", false, false},
 
 
+          // Test cases for issue #1245
+          {"(cn=*bowen*)", "(cn=*bowen*)", true, true},
+          {"(cn=*bowen*)", "(sn=*bowen*)", false, false}
   };
 
 

--
Gitblit v1.10.0