mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-02-05 13:40:08 +08:00
ITS#9353 fix monitor_back_register_database for empty suffix DB
Use the correct database entry instead of the frontendDB entry
This commit is contained in:
parent
bc021bb244
commit
dd82fa5393
@ -72,6 +72,7 @@ typedef struct monitor_entry_t {
|
||||
/* NOTE: flags with 0xF0000000U mask are reserved for subsystem internals */
|
||||
|
||||
struct monitor_callback_t *mp_cb; /* callback sequence */
|
||||
void *mp_private;
|
||||
} monitor_entry_t;
|
||||
|
||||
struct entry_limbo_t; /* in init.c */
|
||||
|
@ -346,6 +346,7 @@ monitor_subsys_database_init_one(
|
||||
mp->mp_info = ms;
|
||||
mp->mp_flags = ms->mss_flags
|
||||
| MONITOR_F_SUB;
|
||||
mp->mp_private = be;
|
||||
|
||||
if ( monitor_cache_add( mi, e ) ) {
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
@ -444,31 +445,13 @@ monitor_back_register_database_and_overlay(
|
||||
|
||||
mp = ( monitor_entry_t * )e_database->e_private;
|
||||
for ( i = -1, ep = &mp->mp_children; *ep; i++ ) {
|
||||
Attribute *a;
|
||||
|
||||
a = attr_find( (*ep)->e_attrs, slap_schema.si_ad_namingContexts );
|
||||
if ( a ) {
|
||||
int j, k;
|
||||
|
||||
/* FIXME: RFC 4512 defines namingContexts without an
|
||||
* equality matching rule, making comparisons
|
||||
* like this one tricky. We use a_vals and
|
||||
* be_suffix instead for now.
|
||||
*/
|
||||
for ( j = 0; !BER_BVISNULL( &a->a_vals[ j ] ); j++ ) {
|
||||
for ( k = 0; !BER_BVISNULL( &be->be_suffix[ k ] ); k++ ) {
|
||||
if ( dn_match( &a->a_vals[ j ],
|
||||
&be->be_suffix[ k ] ) ) {
|
||||
rc = 0;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mp = ( monitor_entry_t * )(*ep)->e_private;
|
||||
|
||||
assert( mp != NULL );
|
||||
if ( mp->mp_private == be->bd_self ) {
|
||||
rc = 0;
|
||||
goto done;
|
||||
}
|
||||
ep = &mp->mp_next;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user