From: Kurt Zeilenga Date: Sat, 8 Jun 2002 18:04:43 +0000 (+0000) Subject: Add rootdn check when rootpw is set. X-Git-Tag: OPENLDAP_REL_ENG_2_MP~5 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=a784e4d054d0da14e5375c13c76bde9b5a6b38ba;p=openldap Add rootdn check when rootpw is set. --- diff --git a/servers/slapd/config.c b/servers/slapd/config.c index d89f9cb21b..d6985fdf0c 100644 --- a/servers/slapd/config.c +++ b/servers/slapd/config.c @@ -1222,30 +1222,50 @@ read_config( const char *fname ) if ( cargc < 2 ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: missing passwd in \"rootpw \"" - " line\n", fname, lineno )); + "%s: line %d: missing passwd in \"rootpw \"" + " line\n", fname, lineno )); #else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: missing passwd in \"rootpw \" line\n", + Debug( LDAP_DEBUG_ANY, "%s: line %d: " + "missing passwd in \"rootpw \" line\n", fname, lineno, 0 ); #endif return( 1 ); } + if ( be == NULL ) { #ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_INFO, - "%s: line %d: rootpw line must appear inside a database " - "definition (ignored)\n", fname, lineno )); + LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: " + "rootpw line must appear inside a database " + "definition (ignored)\n", fname, lineno )); #else - Debug( LDAP_DEBUG_ANY, -"%s: line %d: rootpw line must appear inside a database definition (ignored)\n", + Debug( LDAP_DEBUG_ANY, "%s: line %d: " + "rootpw line must appear inside a database " + "definition (ignored)\n", fname, lineno, 0 ); #endif } else { - be->be_rootpw.bv_val = ch_strdup( cargv[1] ); - be->be_rootpw.bv_len = strlen( be->be_rootpw.bv_val ); + Backend *tmp_be = select_backend( &be->be_rootndn, 0, 0 ); + + if( tmp_be != be ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_INFO, + "%s: line %d: " + "rootpw cannot be set when rootdn not under suffix " + "(ignored)\n", + fname, lineno )); +#else + Debug( LDAP_DEBUG_ANY, "%s: line %d: " + "rootpw cannot be set when rootdn not under suffix" + "(ignored)\n", + fname, lineno, 0 ); +#endif + + } else { + be->be_rootpw.bv_val = ch_strdup( cargv[1] ); + be->be_rootpw.bv_len = strlen( be->be_rootpw.bv_val ); + } } /* make this database read-only */