]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/config.c
Fix memory leak.
[openldap] / servers / slapd / config.c
index cee2fe9e3d7a4f9796d1705a33ef272053a63c41..b2412ad39dcc6cc30e06003dea8ef4349666d30a 100644 (file)
@@ -1,7 +1,7 @@
 /* config.c - configuration file handling routines */
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
@@ -34,6 +34,7 @@ int           global_lastmod = ON;
 int            global_idletimeout = 0;
 char   *global_realm = NULL;
 char           *ldap_srvtab = "";
+char           *default_passwd_hash;
 
 char   *slapd_pid_file  = NULL;
 char   *slapd_args_file = NULL;
@@ -75,13 +76,6 @@ read_config( const char *fname )
 
        Debug( LDAP_DEBUG_CONFIG, "reading config file %s\n", fname, 0, 0 );
 
-       if ( schema_init( ) != 0 ) {
-               Debug( LDAP_DEBUG_ANY,
-                   "error initializing the schema\n",
-                   0, 0, 0 );
-               return( 1 );
-       }
-
        fp_getline_init( &lineno );
 
        while ( (line = fp_getline( fp, &lineno )) != NULL ) {
@@ -171,6 +165,24 @@ read_config( const char *fname )
 
                        slapd_args_file = ch_strdup( cargv[1] );
 
+               /* default password hash */
+               } else if ( strcasecmp( cargv[0], "password-hash" ) == 0 ) {
+                       if ( cargc < 2 ) {
+                               Debug( LDAP_DEBUG_ANY,
+           "%s: line %d: missing realm in \"password-hash <hash>\" line\n",
+                                   fname, lineno, 0 );
+                               return( 1 );
+                       }
+                       if ( default_passwd_hash != NULL ) {
+                               Debug( LDAP_DEBUG_ANY,
+                                       "%s: line %d: already set default password_hash!\n",
+                                       fname, lineno, 0 );
+                               return 1;
+
+                       } else {
+                               default_passwd_hash = ch_strdup( cargv[1] );
+                       }
+
                /* set DIGEST realm */
                } else if ( strcasecmp( cargv[0], "digest-realm" ) == 0 ) {
                        if ( cargc < 2 ) {
@@ -368,7 +380,8 @@ read_config( const char *fname )
 "%s: line %d: rootpw line must appear inside a database definition (ignored)\n",
                                    fname, lineno, 0 );
                        } else {
-                               be->be_root_pw = ch_strdup( cargv[1] );
+                               be->be_root_pw.bv_val = ch_strdup( cargv[1] );
+                               be->be_root_pw.bv_len = strlen( be->be_root_pw.bv_val );
                        }
 
                /* make this database read-only */
@@ -442,7 +455,13 @@ read_config( const char *fname )
                                p = strchr(saveline,'(');
                                parse_oc( fname, lineno, p, cargv );
                        } else {
+#ifdef SLAPD_SCHEMA_NOT_COMPAT
+                               Debug( LDAP_DEBUG_ANY,
+    "%s: line %d: old objectclass format not supported.\n",
+                                   fname, lineno, 0 );
+#else
                                parse_oc_old( be, fname, lineno, cargc, cargv );
+#endif
                        }
 
                /* specify an attribute type */
@@ -454,8 +473,14 @@ read_config( const char *fname )
                                p = strchr(saveline,'(');
                                parse_at( fname, lineno, p, cargv );
                        } else {
-                               attr_syntax_config( fname, lineno, cargc - 1,
+#ifdef SLAPD_SCHEMA_NOT_COMPAT
+                               Debug( LDAP_DEBUG_ANY,
+    "%s: line %d: old attribute type format not supported.\n",
+                                   fname, lineno, 0 );
+#else
+                               at_config( fname, lineno, cargc - 1,
                                    &cargv[1] );
+#endif
                        }
 
                /* turn on/off schema checking */