Skip to content
Snippets Groups Projects
Commit e07454fa authored by Howard Chu's avatar Howard Chu Committed by Quanah Gibson-Mount
Browse files

ITS#9353 fix monitor_back_register_database for empty suffix DB

Use the correct database entry instead of the frontendDB entry
parent ff2ab2e0
No related branches found
No related tags found
No related merge requests found
......@@ -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 */
......
......@@ -345,6 +345,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,
......@@ -446,31 +447,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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment