]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/config.c
Cleanup result handling
[openldap] / servers / slapd / config.c
index d791f1758e31c13c44264c7cbddb1c82bb0545aa..d161180a176b152883689c76ed2cebee50d905de 100644 (file)
@@ -70,7 +70,7 @@ int           global_idletimeout = 0;
 char   *global_host = NULL;
 char   *global_realm = NULL;
 char           *ldap_srvtab = "";
-char           *default_passwd_hash = NULL;
+char           **default_passwd_hash = NULL;
 int            cargc = 0, cargv_size = 0;
 char   **cargv;
 struct berval default_search_base = { 0, NULL };
@@ -635,22 +635,34 @@ read_config( const char *fname, int depth )
                                return 1;
 
                        }
-
-                       if ( lutil_passwd_scheme( cargv[1] ) == 0 ) {
+                       for(i = 1; i < cargc; i++) {
+                               if ( lutil_passwd_scheme( cargv[i] ) == 0 ) {
+#ifdef NEW_LOGGING
+                                       LDAP_LOG( CONFIG, CRIT, 
+                                               "%s: line %d: password scheme \"%s\" not available\n",
+                                               fname, lineno, cargv[i] );
+#else
+                                       Debug( LDAP_DEBUG_ANY,
+                                               "%s: line %d: password scheme \"%s\" not available\n",
+                                               fname, lineno, cargv[i] );
+#endif
+                               } else {
+                                       ldap_charray_add( &default_passwd_hash, cargv[i] );
+                               }
+                       }
+                       if( !default_passwd_hash ) {
 #ifdef NEW_LOGGING
                                LDAP_LOG( CONFIG, CRIT, 
-                                          "%s: line %d: password scheme \"%s\" not available\n",
-                                          fname, lineno, cargv[1] );
+                                       "%s: line %d: no valid hashes found\n",
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
-                                       "%s: line %d: password scheme \"%s\" not available\n",
-                                       fname, lineno, cargv[1] );
-#endif
+                                       "%s: line %d: no valid hashes found\n",
+                                       fname, lineno, 0 );
                                return 1;
+#endif
                        }
 
-                       default_passwd_hash = ch_strdup( cargv[1] );
-
                } else if ( strcasecmp( cargv[0], "password-crypt-salt-format" ) == 0 ) 
                {
                        if ( cargc < 2 ) {
@@ -674,6 +686,15 @@ read_config( const char *fname, int depth )
                } else if ( strncasecmp( cargv[0], "sasl", 4 ) == 0 ) {
                        if ( slap_sasl_config( cargc, cargv, line, fname, lineno ) )
                                return 1;
+#ifdef SLAP_X_SASL_REWRITE
+               /* use authid rewrite instead of sasl regexp */
+               } else if ( strncasecmp( cargv[0], "authid-rewrite", sizeof("authid-rewrite") - 1 ) == 0 ) {
+                       int rc = slap_sasl_rewrite_config( fname, lineno,
+                                       cargc, cargv );
+                       if ( rc ) {
+                               return rc;
+                       }
+#endif /* SLAP_X_SASL_REWRITE */
 
                } else if ( strcasecmp( cargv[0], "schemadn" ) == 0 ) {
                        struct berval dn;
@@ -772,7 +793,7 @@ read_config( const char *fname, int depth )
 
                        for ( i = 1; i < cargc; i++ ) {
                                if ( strncasecmp( cargv[i], "size", 4 ) == 0 ) {
-                                       rc = parse_limit( cargv[i], lim );
+                                       rc = limits_parse_one( cargv[i], lim );
                                        if ( rc ) {
 #ifdef NEW_LOGGING
                                                LDAP_LOG( CONFIG, CRIT, 
@@ -852,7 +873,7 @@ read_config( const char *fname, int depth )
 
                        for ( i = 1; i < cargc; i++ ) {
                                if ( strncasecmp( cargv[i], "time", 4 ) == 0 ) {
-                                       rc = parse_limit( cargv[i], lim );
+                                       rc = limits_parse_one( cargv[i], lim );
                                        if ( rc ) {
 #ifdef NEW_LOGGING
                                                LDAP_LOG( CONFIG, CRIT, 
@@ -920,7 +941,7 @@ read_config( const char *fname, int depth )
                                return( 1 );
                        }
 
-                       if ( parse_limits( be, fname, lineno, cargc, cargv ) ) {
+                       if ( limits_parse( be, fname, lineno, cargc, cargv ) ) {
                                return( 1 );
                        }
 
@@ -2774,7 +2795,7 @@ config_destroy( )
        if ( slapd_pid_file )
                free ( slapd_pid_file );
        if ( default_passwd_hash )
-               free( default_passwd_hash );
+               ldap_charray_free( default_passwd_hash );
        acl_destroy( global_acl, NULL );
 }