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