From c3f029f515196ed310cad3732348370155b4f1b6 Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Mon, 26 Jan 2009 22:27:58 +0000
Subject: [PATCH] ITS#5859

---
 CHANGES                        |  1 +
 servers/slapd/back-bdb/dn2id.c | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/CHANGES b/CHANGES
index 4ecf01f7ca..1abbd0c3ec 100644
--- a/CHANGES
+++ b/CHANGES
@@ -24,6 +24,7 @@ OpenLDAP 2.4.14 Engineering
 	Fixed slapd-bdb/hdb dncachesize handling (ITS#5860)
 	Fixed slapd-bdb/hdb RFC4528 control support (ITS#5861)
 	Fixed slapd-bdb/hdb trickle task usage (ITS#5864)
+	Fixed slapd-hdb idlcache with empty suffix (ITS#5859)
 	Fixed slapd-ldap idassert-bind validity checking (ITS#5863)
 	Fixed slapd-ldif numerous bugs (ITS#5408)
 	Fixed slapd-ldif rename on same DN (ITS#5319)
diff --git a/servers/slapd/back-bdb/dn2id.c b/servers/slapd/back-bdb/dn2id.c
index 2a927f3a4f..7a022db165 100644
--- a/servers/slapd/back-bdb/dn2id.c
+++ b/servers/slapd/back-bdb/dn2id.c
@@ -623,6 +623,11 @@ hdb_dn2id_add(
 				tmp[1] = eip->bei_id;
 				bdb_idl_cache_add_id( bdb, db, &key, e->e_id );
 			}
+			/* Handle DB with empty suffix */
+			if ( !op->o_bd->be_suffix[0].bv_len && eip ) {
+				tmp[1] = eip->bei_id;
+				bdb_idl_cache_add_id( bdb, db, &key, e->e_id );
+			}
 		}
 	}
 
@@ -722,6 +727,11 @@ func_leave:
 				tmp[1] = eip->bei_id;
 				bdb_idl_cache_del_id( bdb, db, &key, e->e_id );
 			}
+			/* Handle DB with empty suffix */
+			if ( !op->o_bd->be_suffix[0].bv_len && eip ) {
+				tmp[1] = eip->bei_id;
+				bdb_idl_cache_del_id( bdb, db, &key, e->e_id );
+			}
 		}
 	}
 	Debug( LDAP_DEBUG_TRACE, "<= hdb_dn2id_delete 0x%lx: %d\n", e->e_id, rc, 0 );
-- 
GitLab