]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slapadd.c
Forced commit, partially revert prev commit
[openldap] / servers / slapd / slapadd.c
index b091233479abc8d3eac04cbf61318e95a5d1de33..5f8d6be3644671f4ab2a53a43c2fcf5b89a9a42d 100644 (file)
@@ -67,6 +67,9 @@ slapadd( int argc, char **argv )
        int rc = EXIT_SUCCESS;
        int manage = 0; 
 
+       /* default "000" */
+       csnsid = 0;
+
        slap_tool_init( progname, SLAPADD, argc, argv );
 
        memset( &opbuf, 0, sizeof(opbuf) );
@@ -96,6 +99,11 @@ slapadd( int argc, char **argv )
        lmax = 0;
        nextline = 0;
 
+       /* enforce schema checking unless not disabled */
+       if ( (slapMode & SLAP_TOOL_NO_SCHEMA_CHECK) == 0) {
+               SLAP_DBFLAGS(be) &= ~(SLAP_DBFLAG_NO_SCHEMA_CHECK);
+       }
+
        if( !dryrun && be->be_entry_open( be, 1 ) != 0 ) {
                fprintf( stderr, "%s: could not open database.\n",
                        progname );
@@ -215,7 +223,7 @@ slapadd( int argc, char **argv )
                        nvals[1].bv_len = 0;
                        nvals[1].bv_val = NULL;
 
-                       csn.bv_len = lutil_csnstr( csnbuf, sizeof( csnbuf ), 0, 0 );
+                       csn.bv_len = lutil_csnstr( csnbuf, sizeof( csnbuf ), csnsid, 0 );
                        csn.bv_val = csnbuf;
 
                        timestamp.bv_val = timebuf;
@@ -349,7 +357,7 @@ slapadd( int argc, char **argv )
                                if ( attr ) {
                                        int             i;
 
-                                       for ( i = 0; !BER_BVISNULL( &attr->a_vals[ i ] ); i++ ) {
+                                       for ( i = 0; !BER_BVISNULL( &attr->a_nvals[ i ] ); i++ ) {
                                                int rc_sid;
 
                                                rc_sid = slap_parse_csn_sid( &attr->a_nvals[ i ] );
@@ -385,8 +393,8 @@ slapadd( int argc, char **argv )
                                                }
                                        }
 
-                                       if ( attr->a_nvals != attr->a_vals ) {
-                                               ber_bvarray_free( attr->a_vals );
+                                       if ( attr->a_nvals != attr->a_nvals ) {
+                                               ber_bvarray_free( attr->a_nvals );
                                        }
                                        attr->a_nvals = NULL;
                                        ber_bvarray_free( attr->a_vals );