]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/schemaparse.c
use slab memory for proxyauthz
[openldap] / servers / slapd / schemaparse.c
index d05d70ae8d10cf7427330ee23134037646f733a4..6b22bf38eba7a250737bcfe130e7fe3dc71759cc 100644 (file)
@@ -1,8 +1,17 @@
 /* schemaparse.c - routines to parse config file objectclass definitions */
 /* $OpenLDAP$ */
 /* schemaparse.c - routines to parse config file objectclass definitions */
 /* $OpenLDAP$ */
-/*
- * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2006 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
  */
 
 #include "portable.h"
  */
 
 #include "portable.h"
@@ -16,8 +25,6 @@
 #include "slap.h"
 #include "ldap_schema.h"
 
 #include "slap.h"
 #include "ldap_schema.h"
 
-int    global_schemacheck = 1; /* schemacheck ON is default */
-
 static void            oc_usage(void); 
 static void            at_usage(void);
 
 static void            oc_usage(void); 
 static void            at_usage(void);
 
@@ -28,12 +35,14 @@ static char *const err2text[] = {
        "user-defined ObjectClass includes operational attributes",
        "user-defined ObjectClass has inappropriate SUPerior",
        "Duplicate objectClass",
        "user-defined ObjectClass includes operational attributes",
        "user-defined ObjectClass has inappropriate SUPerior",
        "Duplicate objectClass",
+       "Inconsistent duplicate objectClass",
        "AttributeType not found",
        "AttributeType inappropriate matching rule",
        "AttributeType inappropriate USAGE",
        "AttributeType inappropriate SUPerior",
        "AttributeType SYNTAX or SUPerior required",
        "Duplicate attributeType",
        "AttributeType not found",
        "AttributeType inappropriate matching rule",
        "AttributeType inappropriate USAGE",
        "AttributeType inappropriate SUPerior",
        "AttributeType SYNTAX or SUPerior required",
        "Duplicate attributeType",
+       "Inconsistent duplicate attributeType",
        "MatchingRule not found",
        "MatchingRule incomplete",
        "Duplicate matchingRule",
        "MatchingRule not found",
        "MatchingRule incomplete",
        "Duplicate matchingRule",
@@ -46,7 +55,8 @@ static char *const err2text[] = {
        "Duplicate Content Rule",
        "Content Rule not for STRUCTURAL object class",
        "Content Rule AUX contains inappropriate object class",
        "Duplicate Content Rule",
        "Content Rule not for STRUCTURAL object class",
        "Content Rule AUX contains inappropriate object class",
-       "Content Rule attribute type list contains duplicate"
+       "Content Rule attribute type list contains duplicate",
+       NULL
 };
 
 char *
 };
 
 char *
@@ -117,8 +127,8 @@ parse_cr(
     const char *fname,
     int                lineno,
     char       *line,
     const char *fname,
     int                lineno,
     char       *line,
-    char       **argv
-)
+    char       **argv,
+       ContentRule **scr )
 {
        LDAPContentRule *cr;
        int             code;
 {
        LDAPContentRule *cr;
        int             code;
@@ -140,7 +150,7 @@ parse_cr(
                return 1;
        }
 
                return 1;
        }
 
-       code = cr_add(cr,1,&err);
+       code = cr_add(cr,1,scr,&err);
        if ( code ) {
                fprintf( stderr, "%s: line %d: %s: \"%s\"\n",
                         fname, lineno, scherr2str(code), err);
        if ( code ) {
                fprintf( stderr, "%s: line %d: %s: \"%s\"\n",
                         fname, lineno, scherr2str(code), err);
@@ -156,8 +166,8 @@ parse_oc(
     const char *fname,
     int                lineno,
     char       *line,
     const char *fname,
     int                lineno,
     char       *line,
-    char       **argv
-)
+    char       **argv,
+       ObjectClass **soc )
 {
        LDAPObjectClass *oc;
        int             code;
 {
        LDAPObjectClass *oc;
        int             code;
@@ -179,7 +189,7 @@ parse_oc(
                return 1;
        }
 
                return 1;
        }
 
-       code = oc_add(oc,1,&err);
+       code = oc_add(oc,1,soc,&err);
        if ( code ) {
                fprintf( stderr, "%s: line %d: %s: \"%s\"\n",
                         fname, lineno, scherr2str(code), err);
        if ( code ) {
                fprintf( stderr, "%s: line %d: %s: \"%s\"\n",
                         fname, lineno, scherr2str(code), err);
@@ -238,8 +248,8 @@ parse_at(
     const char *fname,
     int                lineno,
     char       *line,
     const char *fname,
     int                lineno,
     char       *line,
-    char       **argv
-)
+    char       **argv,
+       AttributeType **sat )
 {
        LDAPAttributeType *at;
        int             code;
 {
        LDAPAttributeType *at;
        int             code;
@@ -268,8 +278,9 @@ parse_at(
                return 1;
        }
 
                return 1;
        }
 
-       code = at_add(at,&err);
+       code = at_add(at,1,sat,&err);
        if ( code ) {
        if ( code ) {
+               ldap_attributetype_free( at );
                fprintf( stderr, "%s: line %d: %s: \"%s\"\n",
                         fname, lineno, scherr2str(code), err);
                return 1;
                fprintf( stderr, "%s: line %d: %s: \"%s\"\n",
                         fname, lineno, scherr2str(code), err);
                return 1;