]> git.sur5r.net Git - openldap/commitdiff
SLAPD_SCHEMA_NOT_COMPAT: fix up add framework
authorKurt Zeilenga <kurt@openldap.org>
Tue, 23 May 2000 01:21:47 +0000 (01:21 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Tue, 23 May 2000 01:21:47 +0000 (01:21 +0000)
servers/slapd/ad.c
servers/slapd/add.c
servers/slapd/modify.c

index 7f63dc0a99293e291119c906b053fd3360547142..0a6e04a3e73ea7e527fa05418133f7c346785b61 100644 (file)
@@ -98,7 +98,6 @@ int slap_bv2ad(
 
        assert( ad != NULL );
        assert( *ad == NULL ); /* temporary */
-       assert( *text != NULL );
 
        if( bv == NULL || bv->bv_len == 0 ) {
                *text = "empty attribute description";
index 70d190ba3495419a99091cdb9c983d9dbfe006ca..ad397914d75223d73f057eed2259a5dd8d05f804 100644 (file)
@@ -96,7 +96,8 @@ do_add( Connection *conn, Operation *op )
 
        /* get the attrs */
        for ( tag = ber_first_element( ber, &len, &last ); tag != LBER_DEFAULT;
-           tag = ber_next_element( ber, &len, last ) ) {
+           tag = ber_next_element( ber, &len, last ) )
+       {
 #ifdef SLAPD_SCHEMA_NOT_COMPAT
                LDAPModList *mod = (LDAPModList *) ch_malloc( sizeof(LDAPModList) );
 #else
@@ -131,7 +132,7 @@ do_add( Connection *conn, Operation *op )
                }
 
 #ifdef SLAPD_SCHEMA_NOT_COMPAT
-               (*modtail)->ml_next = mod;
+               *modtail = mod;
                modtail = &mod->ml_next;
 #else
                attr_merge( e, mod->ml_type, mod->ml_bvalues );
index b9edfc6b1fa4d53fcb17bc69b71726384f6d1ee0..1e9faea7ab0161a35b2e9145686095abf98822b5 100644 (file)
@@ -346,6 +346,12 @@ int slap_modlist2mods(
                        slap_syntax_validate_func *validate =
                                ad->ad_type->sat_syntax->ssyn_validate;
 
+                       if( !validate ) {
+                               slap_mods_free( mod );
+                               *text = "no validator for syntax";
+                               return LDAP_INVALID_SYNTAX;
+                       }
+
                        /*
                         * check that each value is valid per syntax
                         */