More "char *" to struct berval DN changes

This commit is contained in:
Kurt Zeilenga 2001-12-25 02:30:01 +00:00
parent 5ee89d6167
commit 3336619c80
20 changed files with 591 additions and 238 deletions

View File

@ -69,6 +69,18 @@ Package=<4>
###############################################################################
Project: "backmon"="..\servers\slapd\back-monitor\backmon.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "build"=.\build.dsp - Package Owner=<4>
Package=<5>
@ -527,6 +539,9 @@ Package=<4>
Begin Project Dependency
Project_Dep_Name backbdb
End Project Dependency
Begin Project Dependency
Project_Dep_Name backmon
End Project Dependency
}}}
###############################################################################
@ -569,6 +584,9 @@ Package=<4>
Begin Project Dependency
Project_Dep_Name backbdb
End Project Dependency
Begin Project Dependency
Project_Dep_Name backmon
End Project Dependency
}}}
###############################################################################
@ -614,6 +632,9 @@ Package=<4>
Begin Project Dependency
Project_Dep_Name backbdb
End Project Dependency
Begin Project Dependency
Project_Dep_Name backmon
End Project Dependency
}}}
###############################################################################
@ -656,6 +677,9 @@ Package=<4>
Begin Project Dependency
Project_Dep_Name backbdb
End Project Dependency
Begin Project Dependency
Project_Dep_Name backmon
End Project Dependency
}}}
###############################################################################

View File

@ -234,7 +234,7 @@ do_add( Connection *conn, Operation *op )
* appropriate one, or send a referral to our "referral server"
* if we don't hold it.
*/
be = select_backend( e->e_ndn, manageDSAit, 0 );
be = select_backend( &e->e_nname, manageDSAit, 0 );
if ( be == NULL ) {
struct berval **ref = referral_rewrite( default_referral,
NULL, e->e_dn, LDAP_SCOPE_DEFAULT );

View File

@ -0,0 +1,209 @@
# Microsoft Developer Studio Project File - Name="backmon" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 5.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=backmon - Win32 Single Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "backmon.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "backmon.mak" CFG="backmon - Win32 Single Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "backmon - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "backmon - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE "backmon - Win32 Single Debug" (based on "Win32 (x86) Static Library")
!MESSAGE "backmon - Win32 Single Release" (based on\
"Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
!IF "$(CFG)" == "backmon - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\Release"
# PROP Intermediate_Dir "..\..\..\Release\backmon"
# PROP Target_Dir ""
RSC=rc.exe
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\\" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ELSEIF "$(CFG)" == "backmon - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\Debug"
# PROP Intermediate_Dir "..\..\..\Debug\backmon"
# PROP Target_Dir ""
RSC=rc.exe
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\\" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ELSEIF "$(CFG)" == "backmon - Win32 Single Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "backmon"
# PROP BASE Intermediate_Dir "backmon"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\..\..\SDebug"
# PROP Intermediate_Dir "..\..\..\SDebug\backmon"
# PROP Target_Dir ""
RSC=rc.exe
# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\\" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
# ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\\" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ELSEIF "$(CFG)" == "backmon - Win32 Single Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "backldb0"
# PROP BASE Intermediate_Dir "backldb0"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\..\..\SRelease"
# PROP Intermediate_Dir "..\..\..\SRelease\backmon"
# PROP Target_Dir ""
RSC=rc.exe
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\\" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "..\\" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ENDIF
# Begin Target
# Name "backmon - Win32 Release"
# Name "backmon - Win32 Debug"
# Name "backmon - Win32 Single Debug"
# Name "backmon - Win32 Single Release"
# Begin Source File
SOURCE=.\abandon.c
# End Source File
# Begin Source File
SOURCE=".\back-monitor.h"
# End Source File
# Begin Source File
SOURCE=.\backend.c
# End Source File
# Begin Source File
SOURCE=.\bind.c
# End Source File
# Begin Source File
SOURCE=.\cache.c
# End Source File
# Begin Source File
SOURCE=.\compare.c
# End Source File
# Begin Source File
SOURCE=.\conn.c
# End Source File
# Begin Source File
SOURCE=.\database.c
# End Source File
# Begin Source File
SOURCE=.\entry.c
# End Source File
# Begin Source File
SOURCE=.\external.h
# End Source File
# Begin Source File
SOURCE=.\init.c
# End Source File
# Begin Source File
SOURCE=.\log.c
# End Source File
# Begin Source File
SOURCE=.\modify.c
# End Source File
# Begin Source File
SOURCE=.\operation.c
# End Source File
# Begin Source File
SOURCE=.\operational.c
# End Source File
# Begin Source File
SOURCE=".\proto-back-monitor.h"
# End Source File
# Begin Source File
SOURCE=.\rww.c
# End Source File
# Begin Source File
SOURCE=.\search.c
# End Source File
# Begin Source File
SOURCE=.\sent.c
# End Source File
# Begin Source File
SOURCE=.\thread.c
# End Source File
# End Target
# End Project

View File

@ -339,7 +339,7 @@ monitor_back_db_init(
* creates the "cn=Monitor" entry
*/
snprintf( buf, sizeof( buf ),
"dn: %s\n"
"dn: " SLAPD_MONITOR_DN "\n"
"objectClass: top\n"
"objectClass: LDAPsubEntry\n"
#ifdef SLAPD_MONITORSUBENTRY
@ -347,9 +347,8 @@ monitor_back_db_init(
#else /* !SLAPD_MONITORSUBENTRY */
"objectClass: extensibleObject\n"
#endif /* !SLAPD_MONITORSUBENTRY */
"cn: Monitor",
SLAPD_MONITOR_DN
);
"cn: Monitor" );
e = str2entry( buf );
if ( e == NULL) {
#ifdef NEW_LOGGING
@ -415,22 +414,36 @@ monitor_back_open(
{
BackendDB *be;
struct monitorsubsys *ms;
char *ndn;
struct berval dn = { sizeof(SLAPD_MONITOR_DN)-1, SLAPD_MONITOR_DN };
struct berval *ndn = NULL;
int rc;
/*
* adds the monitor backend
*/
ndn = ch_strdup( SLAPD_MONITOR_DN );
dn_normalize( ndn );
rc = dnNormalize( NULL, &dn, &ndn );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
"monitor DN \"" SLAPD_MONITOR_DN "\" is invalid\n" ));
#else
Debug( LDAP_DEBUG_ANY,
"monitor DN \"" SLAPD_MONITOR_DN "\" is invalid\n",
0, 0, 0 );
#endif
return( -1 );
}
be = select_backend( ndn , 0, 0 );
ch_free( ndn );
ber_bvfree( ndn );
if ( be == NULL ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
"unable to get monitor backend\n" ));
#else
Debug( LDAP_DEBUG_ANY,
"unable to get monitor backend\n%s%s%s", "", "", "" );
"unable to get monitor backend\n", 0, 0, 0 );
#endif
return( -1 );
}

View File

@ -89,7 +89,6 @@ monitor_subsys_log_init(
struct monitorinfo *mi;
Entry *e;
int i;
struct monitorentrypriv *mp;
struct berval val, *bv[2] = { &val, NULL };
ldap_pvt_thread_mutex_init( &monitor_log_mutex );
@ -292,8 +291,9 @@ check_constraints( Modification *mod, int *newlevel )
int i;
for ( i = 0; mod->sm_bvalues && mod->sm_bvalues[i] != NULL; i++ ) {
int len, l;
int l;
const char *s;
ber_len_t len;
l = loglevel2int( mod->sm_bvalues[i]->bv_val );
if ( !l ) {
@ -476,7 +476,7 @@ delete_values( Entry *e, Modification *mod, int *newlevel )
static int
replace_values( Entry *e, Modification *mod, int *newlevel )
{
int i, rc;
int rc;
*newlevel = 0;
rc = check_constraints( mod, newlevel );

View File

@ -51,26 +51,22 @@ monitor_subsys_thread_init(
{
struct monitorinfo *mi;
Entry *e;
struct monitorentrypriv *mp;
struct berval val, *bv[2] = { &val, NULL };
static char buf[1024];
mi = ( struct monitorinfo * )be->be_private;
if ( monitor_cache_get( mi,
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn,
&e ) ) {
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn, &e ) )
{
#ifdef NEW_LOGGING
LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
"monitor_subsys_thread_init: "
"unable to get entry '%s'\n",
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn ));
"monitor_subsys_thread_init: unable to get entry '%s'\n",
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn ));
#else
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_thread_init: "
"unable to get entry '%s'\n%s%s",
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn,
"", "" );
"monitor_subsys_thread_init: unable to get entry '%s'\n",
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn, 0, 0 );
#endif
return( -1 );
}

View File

@ -521,14 +521,14 @@ be_db_close( void )
Backend *
select_backend(
const char * dn,
struct berval * dn,
int manageDSAit,
int noSubs )
{
int i, j, len, dnlen;
int i, j;
ber_len_t len, dnlen = dn->bv_len;
Backend *be = NULL;
dnlen = strlen( dn );
for ( i = 0; i < nbackends; i++ ) {
for ( j = 0; backends[i].be_nsuffix != NULL &&
backends[i].be_nsuffix[j] != NULL; j++ )
@ -544,14 +544,17 @@ select_backend(
continue;
}
if ( len && len < dnlen && ( !DN_SEPARATOR( dn[(dnlen-len)-1] ) || DN_ESCAPE( dn[(dnlen-len)-2] ) ) ) {
if ( len && len < dnlen &&
( !DN_SEPARATOR( dn->bv_val[(dnlen-len)-1] ) ||
DN_ESCAPE( dn->bv_val[(dnlen-len)-2] ) ) )
{
/* make sure we have a separator */
continue;
}
if ( strcmp( backends[i].be_nsuffix[j]->bv_val, &dn[dnlen-len] ) == 0 ) {
if ( strcmp( backends[i].be_nsuffix[j]->bv_val,
&dn->bv_val[dnlen-len] ) == 0 )
{
if( be == NULL ) {
be = &backends[i];
@ -990,19 +993,21 @@ backend_group(
)
{
GroupAssertion *g;
int len = strlen(gr_ndn);
struct berval gr;
int i;
gr.bv_val = (char *) gr_ndn;
gr.bv_len = strlen(gr_ndn);
ldap_pvt_thread_mutex_lock( &op->o_abandonmutex );
i = op->o_abandon;
ldap_pvt_thread_mutex_unlock( &op->o_abandonmutex );
if (i)
return SLAPD_ABANDON;
if (i) return SLAPD_ABANDON;
if( strcmp( target->e_ndn, gr_ndn ) != 0 ) {
/* we won't attempt to send it to a different backend */
be = select_backend(gr_ndn, 0,
be = select_backend( &gr, 0,
(be->be_glueflags & SLAP_GLUE_INSTANCE));
if (be == NULL) {
@ -1013,7 +1018,7 @@ backend_group(
ldap_pvt_thread_mutex_lock( &conn->c_mutex );
for (g = conn->c_groups; g; g=g->next) {
if (g->be != be || g->oc != group_oc || g->at != group_at ||
g->len != len)
g->len != gr.bv_len)
continue;
if (strcmp( g->ndn, gr_ndn ) == 0)
break;
@ -1028,12 +1033,12 @@ backend_group(
group_oc, group_at );
if (op->o_tag != LDAP_REQ_BIND) {
g = ch_malloc(sizeof(GroupAssertion) + len);
g = ch_malloc(sizeof(GroupAssertion) + gr.bv_len);
g->be = be;
g->oc = group_oc;
g->at = group_at;
g->res = res;
g->len = len;
g->len = gr.bv_len;
strcpy(g->ndn, gr_ndn);
ldap_pvt_thread_mutex_lock( &conn->c_mutex );
g->next = conn->c_groups;
@ -1058,12 +1063,16 @@ backend_attribute(
struct berval ***vals
)
{
struct berval edn;
edn.bv_val = (char *) entry_ndn;
edn.bv_len = strlen( entry_ndn );
if( target == NULL ||
strcmp( target->e_ndn, entry_ndn ) != 0 )
{
/* we won't attempt to send it to a different backend */
be = select_backend(entry_ndn, 0,
be = select_backend( &edn, 0,
(be->be_glueflags & SLAP_GLUE_INSTANCE));
if (be == NULL) {

View File

@ -456,7 +456,7 @@ do_bind(
* if we don't hold it.
*/
if ( (be = select_backend( ndn->bv_val, 0, 0 )) == NULL ) {
if ( (be = select_backend( ndn, 0, 0 )) == NULL ) {
if ( default_referral ) {
struct berval **ref = referral_rewrite( default_referral,
NULL, pdn->bv_val, LDAP_SCOPE_DEFAULT );

View File

@ -239,7 +239,7 @@ do_compare(
* appropriate one, or send a referral to our "referral server"
* if we don't hold it.
*/
if ( (be = select_backend( ndn->bv_val, manageDSAit, 0 )) == NULL ) {
if ( (be = select_backend( ndn, manageDSAit, 0 )) == NULL ) {
struct berval **ref = referral_rewrite( default_referral,
NULL, pdn->bv_val, LDAP_SCOPE_DEFAULT );

View File

@ -46,8 +46,8 @@ char *global_host = NULL;
char *global_realm = NULL;
char *ldap_srvtab = "";
char *default_passwd_hash;
char *default_search_base = NULL;
char *default_search_nbase = NULL;
struct berval default_search_base = { 0, NULL };
struct berval default_search_nbase = { 0, NULL };
int num_subs = 0;
ber_len_t sockbuf_max_incoming = SLAP_SB_MAX_INCOMING_DEFAULT;
@ -335,8 +335,8 @@ read_config( const char *fname )
if ( cargc < 2 ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: missing dn in \"defaultSearchBase <dn\" "
"line\n", fname, lineno ));
"%s: line %d: missing dn in \"defaultSearchBase <dn\" "
"line\n", fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
"missing dn in \"defaultSearchBase <dn>\" line\n",
@ -348,24 +348,23 @@ read_config( const char *fname )
} else if ( cargc > 2 ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: extra cruft after <dn> in "
"\"defaultSearchBase %s\" line (ignored)\n",
fname, lineno, cargv[1] ));
"%s: line %d: extra cruft after <dn> in "
"\"defaultSearchBase %s\" line (ignored)\n",
fname, lineno, cargv[1] ));
#else
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
"extra cruft after <dn> in \"defaultSearchBase %s\", "
"line (ignored)\n",
fname, lineno, cargv[1] );
#endif
}
if ( bi != NULL || be != NULL ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: defaultSearchBase line must appear "
"prior to any backend or database definitions\n",
fname, lineno ));
"%s: line %d: defaultSearchBase line must appear "
"prior to any backend or database definitions\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
"defaultSearchBaase line must appear prior to "
@ -376,40 +375,65 @@ read_config( const char *fname )
return 1;
}
if ( default_search_nbase != NULL ) {
if ( default_search_nbase.bv_len ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: default search base \"%s\" already defined "
"(discarding old)\n", fname, lineno, default_search_base ));
LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: "
"default search base \"%s\" already defined "
"(discarding old)\n", fname, lineno,
default_search_base->bv_val ));
#else
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
"default search base \"%s\" already defined "
"(discarding old)\n",
fname, lineno, default_search_base );
fname, lineno, default_search_base.bv_val );
#endif
free( default_search_base );
free( default_search_nbase );
free( default_search_base.bv_val );
free( default_search_nbase.bv_val );
}
default_search_base = ch_strdup( cargv[1] );
default_search_nbase = ch_strdup( cargv[1] );
if ( load_ucdata( NULL ) < 0 ) return 1;
if ( load_ucdata( NULL ) < 0 ) {
return( 1 );
}
if( dn_normalize( default_search_nbase ) == NULL ) {
{
struct berval dn, *pdn, *ndn;
dn.bv_val = cargv[1];
dn.bv_len = strlen( dn.bv_val );
rc = dnPretty( NULL, &dn, &pdn );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: %d: invalid default search base \"%s\"\n",
fname, lineno, default_search_base ));
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: defaultSearchBase DN is invalid.\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
"invalid default search base \"%s\"\n",
fname, lineno, default_search_base );
Debug( LDAP_DEBUG_ANY,
"%s: line %d: defaultSearchBase DN is invalid\n",
fname, lineno, 0 );
#endif
return( 1 );
}
return 1;
rc = dnNormalize( NULL, &dn, &ndn );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: defaultSearchBase DN is invalid.\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: defaultSearchBase DN is invalid\n",
fname, lineno, 0 );
#endif
ber_bvfree( ndn );
return( 1 );
}
default_search_base = *pdn;
default_search_nbase = *ndn;
free( pdn );
free( ndn );
}
/* set maximum threads in thread pool */
@ -829,12 +853,12 @@ read_config( const char *fname )
} else if ( strcasecmp( cargv[0], "subordinate" ) == 0 ) {
if ( be == NULL ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: subordinate keyword must appear inside a database "
"definition (ignored).\n", fname, lineno ));
LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: "
"subordinate keyword must appear inside a database "
"definition (ignored).\n", fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: suffix line must appear inside a database definition (ignored)\n",
Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix line "
"must appear inside a database definition (ignored)\n",
fname, lineno, 0 );
#endif
} else {
@ -845,143 +869,159 @@ read_config( const char *fname )
/* set database suffix */
} else if ( strcasecmp( cargv[0], "suffix" ) == 0 ) {
Backend *tmp_be;
struct berval dn;
struct berval *pdn = NULL;
struct berval *ndn = NULL;
if ( cargc < 2 ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: missing dn in \"suffix <dn>\" line.\n",
fname, lineno ));
"%s: line %d: missing dn in \"suffix <dn>\" line.\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: missing dn in \"suffix <dn>\" line\n",
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
"missing dn in \"suffix <dn>\" line\n",
fname, lineno, 0 );
#endif
return( 1 );
} else if ( cargc > 2 ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: extra cruft after <dn> in \"suffix %s\""
" line (ignored).\n", fname, lineno, cargv[1] ));
"%s: line %d: extra cruft after <dn> in \"suffix %s\""
" line (ignored).\n", fname, lineno, cargv[1] ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: extra cruft after <dn> in \"suffix %s\" line (ignored)\n",
Debug( LDAP_DEBUG_ANY, "%s: line %d: extra cruft "
"after <dn> in \"suffix %s\" line (ignored)\n",
fname, lineno, cargv[1] );
#endif
}
if ( be == NULL ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: suffix line must appear inside a database "
"definition (ignored).\n", fname, lineno ));
"%s: line %d: suffix line must appear inside a database "
"definition.\n", fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: suffix line must appear inside a database definition (ignored)\n",
Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix line "
"must appear inside a database definition\n",
fname, lineno, 0 );
#endif
return( 1 );
#if defined(SLAPD_MONITOR_DN)
/* "cn=Monitor" is reserved for monitoring slap */
} else if ( strcasecmp( cargv[1], SLAPD_MONITOR_DN ) == 0 ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: \"%s\" is reserved for monitoring slapd\n",
fname, lineno, SLAPD_MONITOR_DN ));
LDAP_LOG(( "config", LDAP_LEVEL_CRIT, "%s: line %d: \""
SLAPD_MONITOR_DN "\" is reserved for monitoring slapd\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: \"%s\" is reserved for monitoring slapd\n",
fname, lineno, SLAPD_MONITOR_DN );
Debug( LDAP_DEBUG_ANY, "%s: line %d: \""
SLAPD_MONITOR_DN "\" is reserved for monitoring slapd\n",
fname, lineno, 0 );
#endif
return( 1 );
#endif /* SLAPD_MONITOR_DN */
}
} else if ( ( tmp_be = select_backend( cargv[1], 0, 0 ) ) == be ) {
if ( load_ucdata( NULL ) < 0 ) return 1;
dn.bv_val = cargv[1];
dn.bv_len = strlen( cargv[1] );
rc = dnPretty( NULL, &dn, &pdn );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: suffix already served by this backend "
"(ignored)\n", fname, lineno ));
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: suffix DN is invalid.\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: suffix already served by this backend (ignored)\n",
"%s: line %d: suffix DN is invalid\n",
fname, lineno, 0 );
#endif
return( 1 );
}
rc = dnNormalize( NULL, &dn, &ndn );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: suffix DN is invalid.\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: suffix DN is invalid\n",
fname, lineno, 0 );
#endif
ber_bvfree( ndn );
return( 1 );
}
tmp_be = select_backend( ndn, 0, 0 );
if ( tmp_be == be ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: suffix already served by this backend "
"(ignored)\n", fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix "
"already served by this backend (ignored)\n",
fname, lineno, 0 );
#endif
ber_bvfree( pdn );
ber_bvfree( ndn );
} else if ( tmp_be != NULL ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: suffix already served by a preceding "
"backend \"%s\" (ignored)\n", fname, lineno,
tmp_be->be_suffix[0] ));
"%s: line %d: suffix already served by a preceding "
"backend \"%s\"\n", fname, lineno,
tmp_be->be_suffix[0] ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: suffix already served by a preceeding backend \"%s\" (ignored)\n",
Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix "
"already served by a preceeding backend \"%s\"\n",
fname, lineno, tmp_be->be_suffix[0] );
#endif
ber_bvfree( pdn );
ber_bvfree( ndn );
return( 1 );
} else {
char *dn;
if ( load_ucdata( NULL ) < 0 ) {
return( 1 );
}
dn = ch_strdup( cargv[1] );
if( dn_validate( dn ) == NULL ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: suffix DN invalid\"%s\"\n",
fname, lineno, cargv[1] ));
#else
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
"suffix DN invalid \"%s\"\n",
fname, lineno, cargv[1] );
#endif
free( dn );
return 1;
} else if( *dn == '\0' && default_search_nbase != NULL ) {
} else if( pdn->bv_len == 0 && default_search_nbase.bv_len ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: suffix DN empty and default search "
"base provided \"%s\" (assuming okay).\n",
fname, lineno, default_search_base ));
"%s: line %d: suffix DN empty and default search "
"base provided \"%s\" (assuming okay).\n",
fname, lineno, default_search_base.bv_val ));
#else
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
"suffix DN empty and default "
"search base provided \"%s\" (assuming okay)\n",
fname, lineno, default_search_base );
fname, lineno, default_search_base.bv_val );
#endif
}
charray_add( &be->be_suffix, dn );
if ( dn_normalize( dn ) == NULL ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: "
"unable to normalize suffix "
"\"%s\"\n", fname, lineno, dn ));
#else
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
"unable to normalize suffix "
"\"%s\"\n", fname, lineno, dn );
#endif
free( dn );
return 1;
}
ber_bvecadd( &be->be_nsuffix, ber_bvstr( dn ) );
}
charray_add( &be->be_suffix, pdn->bv_val );
ber_bvecadd( &be->be_nsuffix, ndn );
/* set database suffixAlias */
} else if ( strcasecmp( cargv[0], "suffixAlias" ) == 0 ) {
Backend *tmp_be;
struct berval alias, *palias, *nalias;
struct berval aliased, *paliased, *naliased;
if ( cargc < 2 ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: missing alias and aliased_dn in "
"\"suffixAlias <alias> <aliased_dn>\" line.\n",
fname, lineno ));
"%s: line %d: missing alias and aliased_dn in "
"\"suffixAlias <alias> <aliased_dn>\" line.\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: missing alias and aliased_dn in \"suffixAlias <alias> <aliased_dn>\" line\n",
"%s: line %d: missing alias and aliased_dn in "
"\"suffixAlias <alias> <aliased_dn>\" line.\n",
fname, lineno, 0 );
#endif
@ -989,25 +1029,26 @@ read_config( const char *fname )
} else if ( cargc < 3 ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: missing aliased_dn in "
"\"suffixAlias <alias> <aliased_dn>\" line\n",
fname, lineno ));
"%s: line %d: missing aliased_dn in "
"\"suffixAlias <alias> <aliased_dn>\" line\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: missing aliased_dn in \"suffixAlias <alias> <aliased_dn>\" line\n",
fname, lineno, 0 );
"%s: line %d: missing aliased_dn in "
"\"suffixAlias <alias> <aliased_dn>\" line\n",
fname, lineno, 0 );
#endif
return( 1 );
} else if ( cargc > 3 ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: extra cruft in suffixAlias line (ignored)\n",
fname, lineno ));
"%s: line %d: extra cruft in suffixAlias line (ignored)\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: extra cruft in suffixAlias line (ignored)\n",
fname, lineno, 0 );
fname, lineno, 0 );
#endif
}
@ -1015,62 +1056,124 @@ read_config( const char *fname )
if ( be == NULL ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: suffixAlias line must appear inside a "
"database definition (ignored).\n", fname, lineno ));
"%s: line %d: suffixAlias line must appear inside a "
"database definition (ignored).\n", fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: suffixAlias line"
" must appear inside a database definition (ignored)\n",
fname, lineno, 0 );
#endif
}
} else if ( (tmp_be = select_backend( cargv[1], 0, 0 )) != NULL ) {
if ( load_ucdata( NULL ) < 0 ) return 1;
alias.bv_val = cargv[1];
alias.bv_len = strlen( cargv[1] );
rc = dnPretty( NULL, &alias, &palias );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: alias DN is invalid.\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: alias DN is invalid\n",
fname, lineno, 0 );
#endif
return( 1 );
}
rc = dnNormalize( NULL, &alias, &nalias );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: alias DN is invalid.\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: alias DN is invalid\n",
fname, lineno, 0 );
#endif
ber_bvfree( palias );
return( 1 );
}
tmp_be = select_backend( nalias, 0, 0 );
ber_bvfree( nalias );
if ( tmp_be != be ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: suffixAlias served by a preceeding "
"backend \"%s\" (ignored).\n", fname, lineno,
tmp_be->be_suffix[0] ));
"%s: line %d: suffixAlias served by a preceeding "
"backend \"%s\"\n",
fname, lineno, tmp_be->be_suffix[0] ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: suffixAlias served by"
" a preceeding backend \"%s\" (ignored)\n",
" a preceeding backend \"%s\"\n",
fname, lineno, tmp_be->be_suffix[0] );
#endif
ber_bvfree( palias );
return -1;
}
aliased.bv_val = cargv[2];
aliased.bv_len = strlen( cargv[2] );
} else if ( (tmp_be = select_backend( cargv[2], 0, 0 )) != NULL ) {
rc = dnPretty( NULL, &aliased, &paliased );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: aliased DN is invalid.\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: aliased DN is invalid\n",
fname, lineno, 0 );
#endif
ber_bvfree( palias );
return( 1 );
}
rc = dnNormalize( NULL, &aliased, &naliased );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
"%s: line %d: aliased DN is invalid.\n",
fname, lineno ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: aliased DN is invalid\n",
fname, lineno, 0 );
#endif
ber_bvfree( palias );
ber_bvfree( paliased );
return( 1 );
}
tmp_be = select_backend( naliased, 0, 0 );
ber_bvfree( naliased );
if ( tmp_be != be ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: suffixAlias derefs to a different backend "
"a preceeding backend \"%s\" (ignored)\n",
fname, lineno, tmp_be->be_suffix[0] ));
"%s: line %d: suffixAlias derefs to a different backend "
"a preceeding backend \"%s\" (ignored)\n",
fname, lineno, tmp_be->be_suffix[0] ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: suffixAlias derefs to differnet backend"
" a preceeding backend \"%s\" (ignored)\n",
fname, lineno, tmp_be->be_suffix[0] );
#endif
} else {
char *alias, *aliased_dn;
if ( load_ucdata( NULL ) < 0 ) {
return( 1 );
}
alias = ch_strdup( cargv[1] );
(void) dn_normalize( alias );
aliased_dn = ch_strdup( cargv[2] );
(void) dn_normalize( aliased_dn );
ber_bvecadd( &be->be_suffixAlias,
ber_bvstr( alias ) );
ber_bvecadd( &be->be_suffixAlias,
ber_bvstr( aliased_dn ) );
ber_bvfree( palias );
ber_bvfree( paliased );
return -1;
}
ber_bvecadd( &be->be_suffixAlias, palias );
ber_bvecadd( &be->be_suffixAlias, paliased );
/* set max deref depth */
} else if ( strcasecmp( cargv[0], "maxDerefDepth" ) == 0 ) {
int i;
@ -1144,9 +1247,7 @@ read_config( const char *fname )
} else {
struct berval dn, *pdn = NULL, *ndn = NULL;
if ( load_ucdata( NULL ) < 0 ) {
return( 1 );
}
if ( load_ucdata( NULL ) < 0 ) return 1;
dn.bv_val = cargv[1];
dn.bv_len = strlen( cargv[1] );
@ -1822,9 +1923,7 @@ read_config( const char *fname )
} else {
struct berval dn, *ndn = NULL;
if ( load_ucdata( NULL ) < 0 ) {
return( 1 );
}
if ( load_ucdata( NULL ) < 0 ) return 1;
dn.bv_val = cargv[1];
dn.bv_len = strlen( cargv[1] );
@ -2226,9 +2325,8 @@ read_config( const char *fname )
free( saveline );
}
fclose( fp );
if ( load_ucdata( NULL ) < 0 ) {
return( 1 );
}
if ( load_ucdata( NULL ) < 0 ) return 1;
return( 0 );
}

View File

@ -143,7 +143,7 @@ do_delete(
* appropriate one, or send a referral to our "referral server"
* if we don't hold it.
*/
if ( (be = select_backend( ndn->bv_val, manageDSAit, 0 )) == NULL ) {
if ( (be = select_backend( ndn, manageDSAit, 0 )) == NULL ) {
struct berval **ref = referral_rewrite( default_referral,
NULL, pdn->bv_val, LDAP_SCOPE_DEFAULT );

View File

@ -297,7 +297,7 @@ do_modify(
* appropriate one, or send a referral to our "referral server"
* if we don't hold it.
*/
if ( (be = select_backend( ndn->bv_val, manageDSAit, 0 )) == NULL ) {
if ( (be = select_backend( ndn, manageDSAit, 0 )) == NULL ) {
struct berval **ref = referral_rewrite( default_referral,
NULL, pdn->bv_val, LDAP_SCOPE_DEFAULT );

View File

@ -323,7 +323,7 @@ do_modrdn(
* appropriate one, or send a referral to our "referral server"
* if we don't hold it.
*/
if ( (be = select_backend( ndn->bv_val, manageDSAit, 0 )) == NULL ) {
if ( (be = select_backend( ndn, manageDSAit, 0 )) == NULL ) {
struct berval **ref = referral_rewrite( default_referral,
NULL, dn.bv_val, LDAP_SCOPE_DEFAULT );
@ -352,7 +352,7 @@ do_modrdn(
* the same backend, otherwise we return an error.
*/
if( newSuperior.bv_len ) {
newSuperior_be = select_backend( nnewSuperior->bv_val, 0, 0 );
newSuperior_be = select_backend( nnewSuperior, 0, 0 );
if ( newSuperior_be != be ) {
/* newSuperior is in same backend */

View File

@ -153,7 +153,7 @@ LDAP_SLAPD_F (BackendInfo *) backend_info LDAP_P(( const char *type ));
LDAP_SLAPD_F (BackendDB *) backend_db_init LDAP_P(( const char *type ));
LDAP_SLAPD_F (BackendDB *) select_backend LDAP_P((
const char * dn,
struct berval * dn,
int manageDSAit,
int noSubordinates ));
@ -889,7 +889,7 @@ LDAP_SLAPD_F (int) slap_passwd_parse(
* kerberos.c
*/
#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
LDAP_SLAPD_V (char) *ldap_srvtab;
LDAP_SLAPD_V (char *) ldap_srvtab;
LDAP_SLAPD_V (int) krbv4_ldap_auth();
#endif
@ -925,14 +925,14 @@ LDAP_SLAPD_V (slap_access_t) global_default_access;
LDAP_SLAPD_V (int) global_lastmod;
LDAP_SLAPD_V (int) global_idletimeout;
LDAP_SLAPD_V (int) global_schemacheck;
LDAP_SLAPD_V (char) *global_host;
LDAP_SLAPD_V (char) *global_realm;
LDAP_SLAPD_V (char *) global_host;
LDAP_SLAPD_V (char *) global_realm;
LDAP_SLAPD_V (int) sasl_external_x509dn_convert;
LDAP_SLAPD_V (char) *default_passwd_hash;
LDAP_SLAPD_V (char *) default_passwd_hash;
LDAP_SLAPD_V (int) lber_debug;
LDAP_SLAPD_V (int) ldap_syslog;
LDAP_SLAPD_V (char *) default_search_base;
LDAP_SLAPD_V (char *) default_search_nbase;
LDAP_SLAPD_V (struct berval) default_search_base;
LDAP_SLAPD_V (struct berval) default_search_nbase;
LDAP_SLAPD_V (int) nSaslRegexp;
LDAP_SLAPD_V (SaslRegexp_t*) SaslRegexp;
@ -949,7 +949,7 @@ LDAP_SLAPD_V (long) num_ops_initiated;
LDAP_SLAPD_V (char *) slapd_pid_file;
LDAP_SLAPD_V (char *) slapd_args_file;
LDAP_SLAPD_V (char) **g_argv;
LDAP_SLAPD_V (char **) g_argv;
LDAP_SLAPD_V (time_t) starttime;
/* use time(3) -- no mutex */

View File

@ -53,21 +53,24 @@ add_replica_suffix(
const char *suffix
)
{
char *nsuffix = ch_strdup( suffix );
int rc = 0;
struct berval dn, *ndn = NULL;
int rc;
if ( dn_normalize( nsuffix ) != NULL ) {
if ( select_backend( nsuffix, 0, 0 ) == be ) {
charray_add( &be->be_replica[nr]->ri_nsuffix, nsuffix );
} else {
rc = 1;
}
} else {
rc = 2;
dn.bv_val = (char *) suffix;
dn.bv_len = strlen( dn.bv_val );
rc = dnNormalize( NULL, &dn, &ndn );
if( rc != LDAP_SUCCESS ) {
return 2;
}
free( nsuffix );
return( rc );
if ( select_backend( ndn, 0, 0 ) != be ) {
ber_bvfree( ndn );
return 1;
}
ber_bvecadd( &be->be_replica[nr]->ri_nsuffix, ndn );
return 0;
}
void
@ -108,7 +111,7 @@ replog(
int j;
for ( j = 0; be->be_replica[i]->ri_nsuffix[j]; j++ ) {
if ( dn_issuffix( ndn, be->be_replica[i]->ri_nsuffix[j] ) ) {
if ( dn_issuffix( ndn, be->be_replica[i]->ri_nsuffix[j]->bv_val ) ) {
break;
}
}

View File

@ -344,7 +344,7 @@ char *slap_sasl2dn( char *saslname )
#endif
be = select_backend( searchbase.bv_val, 0, 1 );
be = select_backend( &searchbase, 0, 1 );
if(( be == NULL ) || ( be->be_search == NULL))
goto FINISHED;
suffix_alias( be, &searchbase );
@ -467,7 +467,7 @@ int slap_sasl_match( char *rule, char *assertDN, char *authc )
#endif
be = select_backend( searchbase.bv_val, 0, 1 );
be = select_backend( &searchbase, 0, 1 );
if(( be == NULL ) || ( be->be_search == NULL)) {
rc = LDAP_INAPPROPRIATE_AUTH;
goto CONCLUDED;

View File

@ -282,13 +282,14 @@ do_search(
}
}
if( nbase->bv_len == 0 && default_search_nbase != NULL ) {
if( !nbase->bv_len && default_search_nbase.bv_len ) {
ch_free( base.bv_val );
ch_free( nbase->bv_val );
base.bv_val = ch_strdup( default_search_base );
base.bv_len = strlen( default_search_nbase );
nbase->bv_val = ch_strdup( default_search_nbase );
nbase->bv_len = strlen( default_search_nbase );
base.bv_val = ch_strdup( default_search_base.bv_val );
base.bv_len = default_search_base.bv_len;
nbase->bv_val = ch_strdup( default_search_nbase.bv_val );
nbase->bv_len = default_search_nbase.bv_len;
}
/*
@ -296,7 +297,7 @@ do_search(
* appropriate one, or send a referral to our "referral server"
* if we don't hold it.
*/
if ( (be = select_backend( nbase->bv_val, manageDSAit, 1 )) == NULL ) {
if ( (be = select_backend( nbase, manageDSAit, 1 )) == NULL ) {
struct berval **ref = referral_rewrite( default_referral,
NULL, pbase->bv_val, scope );

View File

@ -862,8 +862,8 @@ LDAP_SLAPD_V (int) slapMode;
#define SLAP_TRUNCATE_MODE 0x0100
struct slap_replica_info {
char *ri_host; /* supersedes be_replica */
char **ri_nsuffix; /* array of suffixes this replica accepts */
char *ri_host; /* supersedes be_replica */
struct berval **ri_nsuffix; /* array of suffixes this replica accepts */
};
struct slap_limits_set {
@ -1245,7 +1245,7 @@ typedef struct slap_gacl {
ObjectClass *oc;
AttributeDescription *at;
int res;
int len;
ber_len_t len;
char ndn[1];
} GroupAssertion;

View File

@ -75,7 +75,7 @@ main( int argc, char **argv )
}
/* check backend */
if( select_backend( e->e_ndn, is_entry_referral(e), nosubs ) != be ) {
if( select_backend( &e->e_nname, is_entry_referral(e), nosubs ) != be ) {
fprintf( stderr, "%s: line %d: "
"database (%s) not configured to hold \"%s\"\n",
progname, lineno,

View File

@ -221,7 +221,7 @@ slap_tool_init(
exit( EXIT_FAILURE );
}
be = select_backend( nbase->bv_val, 0, 0 );
be = select_backend( nbase, 0, 0 );
ber_bvfree( nbase );
if( be == NULL ) {