]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/syntax.c
added slapi_operation_set_pb
[openldap] / servers / slapd / syntax.c
index 994761b92c606790f2d50d76d2b0880f63fe8a0e..47f5ca080faa72d8878671241ffec68f05bb4b31 100644 (file)
@@ -1,7 +1,7 @@
 /* syntax.c - routines to manage syntax definitions */
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
@@ -26,20 +26,21 @@ static Syntax *syn_list = NULL;
 
 static int
 syn_index_cmp(
-    struct sindexrec   *sir1,
-    struct sindexrec   *sir2
+       const void *v_sir1,
+       const void *v_sir2
 )
 {
+       const struct sindexrec *sir1 = v_sir1, *sir2 = v_sir2;
        return (strcmp( sir1->sir_name, sir2->sir_name ));
 }
 
 static int
 syn_index_name_cmp(
-    const char         *name,
-    struct sindexrec   *sir
+       const void *name,
+       const void *sir
 )
 {
-       return (strcmp( name, sir->sir_name ));
+       return (strcmp( name, ((const struct sindexrec *)sir)->sir_name ));
 }
 
 Syntax *
@@ -47,8 +48,7 @@ syn_find( const char *synname )
 {
        struct sindexrec        *sir = NULL;
 
-       if ( (sir = (struct sindexrec *) avl_find( syn_index, synname,
-           (AVL_CMP) syn_index_name_cmp )) != NULL ) {
+       if ( (sir = avl_find( syn_index, synname, syn_index_name_cmp )) != NULL ) {
                return( sir->sir_syn );
        }
        return( NULL );
@@ -94,12 +94,20 @@ syn_insert(
 
        if ( ssyn->ssyn_oid ) {
                sir = (struct sindexrec *)
-                       ch_calloc( 1, sizeof(struct sindexrec) );
+                       SLAP_CALLOC( 1, sizeof(struct sindexrec) );
+               if( sir == NULL ) {
+#ifdef NEW_LOGGING
+                       LDAP_LOG( OPERATION, ERR, 
+                               "syn_insert: SLAP_CALLOC Error\n", 0, 0, 0 );
+#else
+                       Debug( LDAP_DEBUG_ANY, "SLAP_CALLOC Error\n", 0, 0, 0 );
+#endif
+                       return LDAP_OTHER;
+               }
                sir->sir_name = ssyn->ssyn_oid;
                sir->sir_syn = ssyn;
                if ( avl_insert( &syn_index, (caddr_t) sir,
-                                (AVL_CMP) syn_index_cmp,
-                                (AVL_DUP) avl_dup_error ) ) {
+                                syn_index_cmp, avl_dup_error ) ) {
                        *err = ssyn->ssyn_oid;
                        ldap_memfree(sir);
                        return SLAP_SCHERR_SYN_DUP;
@@ -120,7 +128,16 @@ syn_add(
        Syntax          *ssyn;
        int             code;
 
-       ssyn = (Syntax *) ch_calloc( 1, sizeof(Syntax) );
+       ssyn = (Syntax *) SLAP_CALLOC( 1, sizeof(Syntax) );
+       if( ssyn == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( OPERATION, ERR, 
+                       "syn_add: SLAP_CALLOC Error\n", 0, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "SLAP_CALLOC Error\n", 0, 0, 0 );
+#endif
+               return LDAP_OTHER;
+       }
 
        AC_MEMCPY( &ssyn->ssyn_syn, syn, sizeof(LDAPSyntax) );
 
@@ -188,8 +205,6 @@ register_syntax(
        return( 0 );
 }
 
-#if defined( SLAPD_SCHEMA_DN )
-
 int
 syn_schema_info( Entry *e )
 {
@@ -224,10 +239,10 @@ syn_schema_info( Entry *e )
 #endif
 
 #endif
-               attr_merge( e, ad_ldapSyntaxes, vals );
+               if( attr_merge( e, ad_ldapSyntaxes, vals ) )
+                       return -1;
                ldap_memfree( vals[0].bv_val );
        }
        return 0;
 }
 
-#endif