]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/schemaparse.c
Fix backend_destroy to call bi_destroy instead of bi_close
[openldap] / servers / slapd / schemaparse.c
index 8f72136abbc2711209d36b66d69ab713c32d4fcc..900263c84aaa000056f1d0b32fd238a2d4265ab5 100644 (file)
@@ -9,13 +9,10 @@
 
 #include "slap.h"
 
-extern char            **str2charray();
-extern void            charray_merge();
-
 struct objclass                *global_oc;
 int                    global_schemacheck;
 
-static void            oc_usage();
+static void            oc_usage(void);
 
 void
 parse_oc(
@@ -32,16 +29,17 @@ parse_oc(
        struct objclass **ocp;
 
        oc = (struct objclass *) ch_calloc( 1, sizeof(struct objclass) );
-       oc->oc_name = strdup( argv[1] );
+       oc->oc_name = ch_strdup( argv[1] );
        for ( i = 2; i < argc; i++ ) {
                /* required attributes */
                if ( strcasecmp( argv[i], "requires" ) == 0 ) {
                        do {
                                i++;
                                if ( i < argc ) {
+                                       char **s = str2charray( argv[i], "," );
                                        last = argv[i][strlen( argv[i] ) - 1];
-                                       charray_merge( &oc->oc_required,
-                                               str2charray( argv[i], "," ) );
+                                       charray_merge( &oc->oc_required, s );
+                                       charray_free( s );
                                }
                        } while ( i < argc && last == ',' );
 
@@ -50,9 +48,11 @@ parse_oc(
                        do {
                                i++;
                                if ( i < argc ) {
+                                       char **s = str2charray( argv[i], "," );
                                        last = argv[i][strlen( argv[i] ) - 1];
-                                       charray_merge( &oc->oc_allowed,
-                                               str2charray( argv[i], "," ) );
+                                       
+                                       charray_merge( &oc->oc_allowed, s );
+                                       charray_free( s );
                                }
                        } while ( i < argc && last == ',' );
 
@@ -72,7 +72,7 @@ parse_oc(
 }
 
 static void
-oc_usage()
+oc_usage( void )
 {
        fprintf( stderr, "<oc clause> ::= objectclass <ocname>\n" );
        fprintf( stderr, "                [ requires <attrlist> ]\n" );