From 528c64d47c11016bc67c441ad5723fe42179a192 Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Thu, 15 Apr 2010 21:59:56 +0000
Subject: [PATCH] ITS#6490

---
 CHANGES                         | 2 ++
 servers/slapd/overlays/dds.c    | 6 ++++++
 servers/slapd/overlays/pcache.c | 4 ++++
 3 files changed, 12 insertions(+)

diff --git a/CHANGES b/CHANGES
index 8ec6ea2a47..5ed9a8f2e3 100644
--- a/CHANGES
+++ b/CHANGES
@@ -14,8 +14,10 @@ OpenLDAP 2.4.22 Engineering
 	Fixed slapd syncrepl for unknown attrs and delta-sync (ITS#6473)
 	Fixed slapd-bdb contextCSN updates from updatedn (ITS#6469)
 	Fixed slapo-collect REP_ENTRY flag handling (ITS#5340,ITS#6423)
+	Fixed slapo-dds with NULL backend (ITS#6490)
 	Fixed slapo-dynlist REP_ENTRY flag handling (ITS#5340,ITS#6423)
 	Fixed slapo-pcache to release its own entries (ITS#6484)
+	Fixed slapo-pcache with NULL backend (ITS#6490)
 	Fixed slapo-rwm entry release handling (ITS#6484)
 	Fixed slapo-rwm olcRwmMap handling (ITS#6436)
 	Fixed slapo-rwm REP_ENTRY flag handling (ITS#5340,ITS#6423)
diff --git a/servers/slapd/overlays/dds.c b/servers/slapd/overlays/dds.c
index 6b579b9b07..c0bbc40d84 100644
--- a/servers/slapd/overlays/dds.c
+++ b/servers/slapd/overlays/dds.c
@@ -1821,6 +1821,12 @@ slap_exop_refresh(
 	op->o_req_dn = op->o_req_ndn;
 
 	op->o_bd = select_backend( &op->o_req_ndn, 0 );
+	if ( op->o_bd == NULL ) {
+		send_ldap_error( op, rs, LDAP_NO_SUCH_OBJECT,
+			"no global superior knowledge" );
+		goto done;
+	}
+
 	if ( !SLAP_DYNAMIC( op->o_bd ) ) {
 		send_ldap_error( op, rs, LDAP_UNAVAILABLE_CRITICAL_EXTENSION,
 			"backend does not support dynamic directory services" );
diff --git a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c
index db36896b44..46ce69ce69 100644
--- a/servers/slapd/overlays/pcache.c
+++ b/servers/slapd/overlays/pcache.c
@@ -5111,6 +5111,10 @@ pcache_exop_query_delete(
 	op->o_req_dn = op->o_req_ndn;
 
 	op->o_bd = select_backend( &op->o_req_ndn, 0 );
+	if ( op->o_bd == NULL ) {
+		send_ldap_error( op, rs, LDAP_NO_SUCH_OBJECT,
+			"no global superior knowledge" );
+	}
 	rs->sr_err = backend_check_restrictions( op, rs,
 		(struct berval *)&pcache_exop_QUERY_DELETE );
 	if ( rs->sr_err != LDAP_SUCCESS ) {
-- 
GitLab