From c549b645f5300bed76e62614e0137c7eecc2e067 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Thu, 16 Jul 2026 07:48:20 +0000
Subject: [PATCH] [#738] Fix dereferencing an alias that points into another backend (#741)

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java |   11 +++++------
 1 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java
index fd5f0bc..c3e38a4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java
@@ -13,6 +13,7 @@
  *
  * Copyright 2006-2008 Sun Microsystems, Inc.
  * Portions Copyright 2014-2016 ForgeRock AS.
+ * Portions Copyrighted 2026 3A Systems, LLC.
  */
 package org.opends.server.backends;
 
@@ -494,9 +495,10 @@
     SearchScope  scope  = searchOperation.getScope();
     SearchFilter filter = searchOperation.getFilter();
 
-    // Make sure the base entry exists if it's supposed to be in this backend.
+    // Make sure the base entry exists. A base DN this backend does not hold has no entry
+    // either, so it must be reported as missing rather than searched for.
     Entry baseEntry = entryMap.get(baseDN);
-    if (baseEntry == null && handlesEntry(baseDN))
+    if (baseEntry == null)
     {
       DN matchedDN = serverContext.getBackendConfigManager().getParentDNInSuffix(baseDN);
       while (matchedDN != null)
@@ -515,10 +517,7 @@
               ResultCode.NO_SUCH_OBJECT, message, matchedDN, null);
     }
 
-    if (baseEntry != null)
-    {
-      baseEntry = baseEntry.duplicate(true);
-    }
+    baseEntry = baseEntry.duplicate(true);
 
     // If it's a base-level search, then just get that entry and return it if it
     // matches the filter.

--
Gitblit v1.10.0