X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fbackend.c;h=3593be516892709314aabc483d24ffedb3920188;hb=2c87d24f31d29bed606b443ef2d8e881b87207c7;hp=ffae45af4ffa945b4301abb92f04afb3ce309154;hpb=ceb1c5ce1c22a1e062cf724d222b126751e2906a;p=openldap diff --git a/servers/slapd/backend.c b/servers/slapd/backend.c index ffae45af4f..3593be5168 100644 --- a/servers/slapd/backend.c +++ b/servers/slapd/backend.c @@ -134,7 +134,7 @@ select_backend( char * dn ) continue; } - if ( strcasecmp( backends[i].be_suffix[j], + if ( strcmp( backends[i].be_suffix[j], dn + (dnlen - len) ) == 0 ) { return( &backends[i] ); } @@ -154,7 +154,7 @@ select_backend( char * dn ) continue; } - if ( strcasecmp( backends[i].be_suffixAlias[j], + if ( strcmp( backends[i].be_suffixAlias[j], dn + (dnlen - len) ) == 0 ) { return( &backends[i] ); } @@ -187,7 +187,7 @@ be_issuffix( int i; for ( i = 0; be->be_suffix != NULL && be->be_suffix[i] != NULL; i++ ) { - if ( strcasecmp( be->be_suffix[i], suffix ) == 0 ) { + if ( strcmp( be->be_suffix[i], suffix ) == 0 ) { return( 1 ); } } @@ -196,33 +196,48 @@ be_issuffix( } int -be_isroot( Backend *be, char *dn ) +be_isroot( Backend *be, char *ndn ) { - if ( dn == NULL ) { + int rc; + + if ( ndn == NULL || be->be_root_ndn == NULL ) { return( 0 ); } - return( be->be_rootdn ? strcasecmp( be->be_rootdn, dn ) == 0 - : 0 ); + rc = strcmp( be->be_root_ndn, ndn ) ? 0 : 1; + + return(rc); +} + +char * +be_root_dn( Backend *be ) +{ + int rc; + + if ( be->be_root_dn == NULL ) { + return( "" ); + } + + return be->be_root_dn; } int -be_isroot_pw( Backend *be, char *dn, struct berval *cred ) +be_isroot_pw( Backend *be, char *ndn, struct berval *cred ) { int result; - if ( ! be_isroot( be, dn ) ) { + if ( ! be_isroot( be, ndn ) ) { return( 0 ); } #ifdef SLAPD_CRYPT - pthread_mutex_lock( &crypt_mutex ); + ldap_pvt_thread_mutex_lock( &crypt_mutex ); #endif - result = lutil_passwd( cred->bv_val, be->be_rootpw ); + result = lutil_passwd( cred->bv_val, be->be_root_pw ); #ifdef SLAPD_CRYPT - pthread_mutex_unlock( &crypt_mutex ); + ldap_pvt_thread_mutex_unlock( &crypt_mutex ); #endif return result == 0; @@ -260,17 +275,17 @@ be_unbind( int be_group( Backend *be, - Entry *e, - char *bdn, - char *edn, + Entry *target, + char *gr_ndn, + char *op_ndn, char *objectclassValue, char *groupattrName ) { - if (be->be_group) - return(be->be_group(be, e, bdn, edn, - objectclassValue, groupattrName)); - else - return(1); + if (be->be_group) + return( be->be_group(be, target, gr_ndn, op_ndn, + objectclassValue, groupattrName) ); + else + return(1); } #endif