/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 1998-2015 The OpenLDAP Foundation.
+ * Copyright 1998-2018 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga.
* Portions Copyright 2003 IBM Corporation.
* All rights reserved.
#include "slapcommon.h"
+extern int slap_DN_strict; /* dn.c */
+
static char csnbuf[ LDAP_PVT_CSNSTR_BUFSIZE ];
int
lmax = 0;
nextline = 0;
- /* enforce schema checking unless not disabled */
+ /* enforce schema checking unless not disabled and allow unknown
+ * attributes otherwise */
if ( (slapMode & SLAP_TOOL_NO_SCHEMA_CHECK) == 0) {
SLAP_DBFLAGS(be) &= ~(SLAP_DBFLAG_NO_SCHEMA_CHECK);
+ } else {
+ slap_DN_strict = 0;
}
if( !dryrun && be->be_entry_open( be, 1 ) != 0 ) {
request = "delete";
break;
}
- /* backend does not support delete, fallthrough */
+ /* backend does not support delete, fallthru */
case LDAP_REQ_MODRDN:
fprintf( stderr, "%s: request 0x%lx not supported (line=%lu)\n",
rc = (id == NOID);
if ( rc == LDAP_SUCCESS && lr.lr_op != LDAP_REQ_DELETE ) {
e_orig = be->be_entry_get( be, id );
- e = entry_dup( e_orig );
+ if ( e_orig )
+ e = entry_dup( e_orig );
+ rc = (e == NULL);
}
break;
}
break;
case LDAP_REQ_DELETE:
- rc = be->be_entry_delete( be, id, &bvtext );
- e_orig = NULL;
+ rc = be->be_entry_delete( be, &ndn, &bvtext );
break;
}
if( rc != LDAP_SUCCESS ) {
fprintf( stderr, "%s: could not %s entry dn=\"%s\" "
- "(line=%lu): %s\n", progname, request, e->e_dn,
+ "(line=%lu): %s\n", progname, request, ndn.bv_val,
lineno, bvtext.bv_val );
rc = EXIT_FAILURE;
goto cleanup;
if ( verbose )
fprintf( stderr, "%s: \"%s\" (%08lx)\n",
- request, e->e_dn, (long) id );
+ request, ndn.bv_val, (long) id );
} else {
if ( verbose )
fprintf( stderr, "%s: \"%s\"\n",
- request, e->e_dn );
+ request, ndn.bv_val );
}
cleanup:;