From e7575a3dec0c906fada777fe340c9ed767d3e173 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Mon, 05 Sep 2016 09:30:52 +0000
Subject: [PATCH] Fix: isChild() mistakenly report parent-child relationship.
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DnKeyFormat.java | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DnKeyFormat.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DnKeyFormat.java
index 87403d2..5d4981e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DnKeyFormat.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DnKeyFormat.java
@@ -118,23 +118,25 @@
*/
static boolean isChild(ByteSequence parent, ByteSequence child)
{
- if (!child.startsWith(parent))
+ if (child.length() <= parent.length()
+ || child.byteAt(parent.length()) != NORMALIZED_RDN_SEPARATOR
+ || !child.startsWith(parent))
{
return false;
}
// Immediate children should only have one RDN separator past the parent length
- int nbSeparator = 0;
+ boolean childSeparatorDetected = false;
for (int i = parent.length() ; i < child.length(); i++)
{
if (child.byteAt(i) == NORMALIZED_RDN_SEPARATOR)
{
- nbSeparator++;
- if (nbSeparator > 1)
+ if (childSeparatorDetected)
{
return false;
}
+ childSeparatorDetected = true;
}
}
- return nbSeparator == 1;
+ return childSeparatorDetected;
}
}
--
Gitblit v1.10.0