diff --git a/servers/slapd/back-bdb/dn2id.c b/servers/slapd/back-bdb/dn2id.c index 0e73b95738..d9a89325be 100644 --- a/servers/slapd/back-bdb/dn2id.c +++ b/servers/slapd/back-bdb/dn2id.c @@ -70,7 +70,7 @@ bdb_dn2id_add( } { - char **subtree = dn_subtree( NULL, dn ); + char **subtree = dn_subtree( be, dn ); if( subtree != NULL ) { int i; @@ -152,7 +152,7 @@ bdb_dn2id_delete( } { - char **subtree = dn_subtree( NULL, dn ); + char **subtree = dn_subtree( be, dn ); if( subtree != NULL ) { int i; @@ -363,6 +363,12 @@ bdb_dn2idl( Debug( LDAP_DEBUG_TRACE, "=> bdb_dn2idl( \"%s\" )\n", dn, 0, 0 ); + if (prefix == DN_SUBTREE_PREFIX && be_issuffix(be, dn)) + { + BDB_IDL_ALL(bdb, ids); + return 0; + } + DBTzero( &key ); key.size = strlen( dn ) + 2; key.data = ch_malloc( key.size );