]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slapadd.c
ITS#7256 A few issues discovered during testing slapmodify.
[openldap] / servers / slapd / slapadd.c
index 8b339928e8200bc917b2df6cd5c8103831f6b4b1..4e93a55f2239db94325b1188561f8a1d2875a1fd 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2013 The OpenLDAP Foundation.
+ * Copyright 1998-2014 The OpenLDAP Foundation.
  * Portions Copyright 1998-2003 Kurt D. Zeilenga.
  * Portions Copyright 2003 IBM Corporation.
  * All rights reserved.
@@ -40,6 +40,8 @@
 
 #include "slapcommon.h"
 
+extern int slap_DN_strict;     /* dn.c */
+
 static char csnbuf[ LDAP_PVT_CSNSTR_BUFSIZE ];
 
 typedef struct Erec {
@@ -96,15 +98,23 @@ again:
        {
                BackendDB *bd;
                Entry *e;
+               int prev_DN_strict;
 
                if ( erec->lineno < jumpline )
                        goto again;
 
+               if ( !dbnum ) {
+                       prev_DN_strict = slap_DN_strict;
+                       slap_DN_strict = 0;
+               }
                e = str2entry2( buf, checkvals );
+               if ( !dbnum ) {
+                       slap_DN_strict = prev_DN_strict;
+               }
 
                if ( enable_meter )
                        lutil_meter_update( &meter,
-                                        ftell( ldiffp->fp ),
+                                        ftello( ldiffp->fp ),
                                         0);
 
                if( e == NULL ) {
@@ -473,7 +483,7 @@ slapadd( int argc, char **argv )
        bvtext.bv_val[0] = '\0';
 
        if ( enable_meter ) {
-               lutil_meter_update( &meter, ftell( ldiffp->fp ), 1);
+               lutil_meter_update( &meter, ftello( ldiffp->fp ), 1);
                lutil_meter_close( &meter );
        }