X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fconfig.c;h=8951f40664229f103fa8e1c54acede67ce3d63bc;hb=9b4bf8a973c8cfea809be9a4b658f785a6b16f2f;hp=c9428b013c8bfa1ac917d079291bdab2a5e22f01;hpb=7d5978b4aa64de1545dca1e304154eec81757ec2;p=openldap diff --git a/servers/slapd/config.c b/servers/slapd/config.c index c9428b013c..8951f40664 100644 --- a/servers/slapd/config.c +++ b/servers/slapd/config.c @@ -6,7 +6,6 @@ */ #include "portable.h" -#include "slapi_common.h" #include @@ -16,10 +15,12 @@ #include #include -#include "lutil.h" #include "ldap_pvt.h" #include "slap.h" +#ifdef LDAP_SLAPI #include "slapi.h" +#endif +#include "lutil.h" #define ARGS_STEP 512 @@ -62,16 +63,15 @@ struct berval global_schemandn = { 0, NULL }; ber_len_t sockbuf_max_incoming = SLAP_SB_MAX_INCOMING_DEFAULT; ber_len_t sockbuf_max_incoming_auth= SLAP_SB_MAX_INCOMING_AUTH; +int slap_conn_max_pending = SLAP_CONN_MAX_PENDING_DEFAULT; +int slap_conn_max_pending_auth = SLAP_CONN_MAX_PENDING_AUTH; + char *slapd_pid_file = NULL; char *slapd_args_file = NULL; char *strtok_quote_ptr; -#ifdef SLAPD_RLOOKUPS -int use_reverse_lookup = 1; -#else /* !SLAPD_RLOOKUPS */ int use_reverse_lookup = 0; -#endif /* !SLAPD_RLOOKUPS */ static char *fp_getline(FILE *fp, int *lineno); static void fp_getline_init(int *lineno); @@ -335,6 +335,80 @@ read_config( const char *fname, int depth ) sockbuf_max_incoming_auth = max; + /* set conn pending max */ + } else if ( strcasecmp( cargv[0], "conn_max_pending" ) == 0 ) { + long max; + if ( cargc < 2 ) { +#ifdef NEW_LOGGING + LDAP_LOG( CONFIG, CRIT, + "%s: line %d: missing max in \"conn_max_pending " + "\" line\n", fname, lineno, 0 ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing max in \"conn_max_pending \" line\n", + fname, lineno, 0 ); +#endif + + return( 1 ); + } + + max = atol( cargv[1] ); + + if( max < 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG( CONFIG, CRIT, + "%s: line %d: invalid max value (%ld) in " + "\"conn_max_pending \" line.\n", + fname, lineno, max ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: invalid max value (%ld) in " + "\"conn_max_pending \" line.\n", + fname, lineno, max ); +#endif + + return( 1 ); + } + + slap_conn_max_pending = max; + + /* set conn pending max authenticated */ + } else if ( strcasecmp( cargv[0], "conn_max_pending_auth" ) == 0 ) { + long max; + if ( cargc < 2 ) { +#ifdef NEW_LOGGING + LDAP_LOG( CONFIG, CRIT, + "%s: line %d: missing max in \"conn_max_pending_auth " + "\" line\n", fname, lineno, 0 ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing max in \"conn_max_pending_auth \" line\n", + fname, lineno, 0 ); +#endif + + return( 1 ); + } + + max = atol( cargv[1] ); + + if( max < 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG( CONFIG, CRIT, + "%s: line %d: invalid max value (%ld) in " + "\"conn_max_pending_auth \" line.\n", + fname, lineno, max ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: invalid max value (%ld) in " + "\"conn_max_pending_auth \" line.\n", + fname, lineno, max ); +#endif + + return( 1 ); + } + + slap_conn_max_pending_auth = max; + /* default search base */ } else if ( strcasecmp( cargv[0], "defaultSearchBase" ) == 0 ) { if ( cargc < 2 ) { @@ -959,141 +1033,6 @@ read_config( const char *fname, int depth ) ber_bvarray_add( &be->be_suffix, &pdn ); ber_bvarray_add( &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, CRIT, - "%s: line %d: missing alias and aliased_dn in " - "\"suffixAlias \" line.\n", - fname, lineno, 0 ); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: missing alias and aliased_dn in " - "\"suffixAlias \" line.\n", - fname, lineno, 0 ); -#endif - - return( 1 ); - } else if ( cargc < 3 ) { -#ifdef NEW_LOGGING - LDAP_LOG( CONFIG, CRIT, - "%s: line %d: missing aliased_dn in " - "\"suffixAlias \" line\n", - fname, lineno, 0 ); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: missing aliased_dn in " - "\"suffixAlias \" line\n", - fname, lineno, 0 ); -#endif - return( 1 ); - - } else if ( cargc > 3 ) { -#ifdef NEW_LOGGING - LDAP_LOG( CONFIG, CRIT, - "%s: line %d: extra cruft in suffixAlias line (ignored)\n", - fname, lineno, 0 ); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: extra cruft in suffixAlias line (ignored)\n", - fname, lineno, 0 ); -#endif - } - - if ( be == NULL ) { -#ifdef NEW_LOGGING - LDAP_LOG( CONFIG, INFO, - "%s: line %d: suffix line must appear inside a database " - "definition.\n", fname, lineno, 0 ); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: suffixAlias line" - " must appear inside a database definition.\n", - fname, lineno, 0 ); -#endif - return 1; - } - - if ( load_ucdata( NULL ) < 0 ) return 1; - - alias.bv_val = cargv[1]; - alias.bv_len = strlen( cargv[1] ); - - rc = dnPrettyNormal( NULL, &alias, &palias, &nalias ); - if( rc != LDAP_SUCCESS ) { -#ifdef NEW_LOGGING - LDAP_LOG( CONFIG, CRIT, - "%s: line %d: alias DN is invalid.\n", fname, lineno, 0 ); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: alias DN is invalid\n", - fname, lineno, 0 ); -#endif - return( 1 ); - } - - tmp_be = select_backend( &nalias, 0, 0 ); - free( nalias.bv_val ); - if ( tmp_be && tmp_be != be ) { -#ifdef NEW_LOGGING - LDAP_LOG( CONFIG, INFO, - "%s: line %d: suffixAlias served by a preceeding " - "backend \"%s\"\n", fname, lineno, - tmp_be->be_suffix[0].bv_val ); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: suffixAlias served by" - " a preceeding backend \"%s\"\n", - fname, lineno, tmp_be->be_suffix[0].bv_val ); -#endif - free( palias.bv_val ); - return -1; - } - - aliased.bv_val = cargv[2]; - aliased.bv_len = strlen( cargv[2] ); - - rc = dnPrettyNormal( NULL, &aliased, &paliased, &naliased ); - if( rc != LDAP_SUCCESS ) { -#ifdef NEW_LOGGING - LDAP_LOG( CONFIG, CRIT, - "%s: line %d: aliased DN is invalid.\n", fname, lineno,0 ); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: aliased DN is invalid\n", - fname, lineno, 0 ); -#endif - free( palias.bv_val ); - return( 1 ); - } - - tmp_be = select_backend( &naliased, 0, 0 ); - free( naliased.bv_val ); - if ( tmp_be && tmp_be != be ) { -#ifdef NEW_LOGGING - LDAP_LOG( CONFIG, INFO, - "%s: line %d: suffixAlias derefs to a different backend " - "a preceeding backend \"%s\"\n", - fname, lineno, tmp_be->be_suffix[0].bv_val ); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: suffixAlias derefs to differnet backend" - " a preceeding backend \"%s\"\n", - fname, lineno, tmp_be->be_suffix[0].bv_val ); -#endif - free( palias.bv_val ); - free( paliased.bv_val ); - return -1; - } - - ber_bvarray_add( &be->be_suffixAlias, &palias ); - ber_bvarray_add( &be->be_suffixAlias, &paliased ); - /* set max deref depth */ } else if ( strcasecmp( cargv[0], "maxDerefDepth" ) == 0 ) { int i; @@ -1642,7 +1581,19 @@ read_config( const char *fname, int depth ) /* specify an objectclass */ } else if ( strcasecmp( cargv[0], "objectclass" ) == 0 ) { - if ( *cargv[1] == '(' /*')'*/) { + if ( cargc < 2 ) { +#ifdef NEW_LOGGING + LDAP_LOG( CONFIG, INFO, + "%s: line %d: illegal objectclass format.\n", + fname, lineno , 0 ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: illegal objectclass format.\n", + fname, lineno, 0 ); +#endif + return( 1 ); + + } else if ( *cargv[1] == '(' /*')'*/) { char * p; p = strchr(saveline,'(' /*')'*/); rc = parse_oc( fname, lineno, p, cargv ); @@ -1672,7 +1623,19 @@ read_config( const char *fname, int depth ) } else if (( strcasecmp( cargv[0], "attributetype" ) == 0 ) || ( strcasecmp( cargv[0], "attribute" ) == 0 )) { - if ( *cargv[1] == '(' /*')'*/) { + if ( cargc < 2 ) { +#ifdef NEW_LOGGING + LDAP_LOG( CONFIG, INFO, "%s: line %d: " + "illegal attribute type format.\n", + fname, lineno , 0 ); +#else + Debug( LDAP_DEBUG_ANY, "%s: line %d: " + "illegal attribute type format.\n", + fname, lineno, 0 ); +#endif + return( 1 ); + + } else if ( *cargv[1] == '(' /*')'*/) { char * p; p = strchr(saveline,'(' /*')'*/); rc = parse_at( fname, lineno, p, cargv ); @@ -2682,5 +2645,7 @@ config_destroy( ) free ( slapd_args_file ); if ( slapd_pid_file ) free ( slapd_pid_file ); + if ( default_passwd_hash ) + free( default_passwd_hash ); acl_destroy( global_acl, NULL ); }