[SCM] Samba Shared Repository - branch master updated

Matthias Dieter Wallnöfer mdw at samba.org
Tue Aug 10 13:44:37 MDT 2010


The branch, master has been updated
       via  067b572... s4:objectclass LDB module - weak the check for the "rIDSet" delete constraint
      from  303089f... s4:dsdb/common/util.c - provide a call which returns the forest function level

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 067b5721c71cbc0004ea59d357e79cd4fc8d8954
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Tue Aug 10 21:01:11 2010 +0200

    s4:objectclass LDB module - weak the check for the "rIDSet" delete constraint
    
    Perform it only when a "rIDSet" does exist. Requested by ekacnet for
    "upgradeprovision".

-----------------------------------------------------------------------

Summary of changes:
 source4/dsdb/samdb/ldb_modules/objectclass.c |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/samdb/ldb_modules/objectclass.c b/source4/dsdb/samdb/ldb_modules/objectclass.c
index 9c2e416..548d51e 100644
--- a/source4/dsdb/samdb/ldb_modules/objectclass.c
+++ b/source4/dsdb/samdb/ldb_modules/objectclass.c
@@ -1366,20 +1366,22 @@ static int objectclass_do_delete(struct oc_context *ac)
 	}
 
 	/* DC's rIDSet object */
+	/* Perform this check only when it does exist - this is needed in order
+	 * to don't let existing provisions break. */
 	ret = samdb_rid_set_dn(ldb, ac, &dn);
-	if (ret != LDB_SUCCESS) {
+	if ((ret != LDB_SUCCESS) && (ret != LDB_ERR_NO_SUCH_OBJECT)) {
 		return ret;
 	}
-
-	if (ldb_dn_compare(ac->req->op.del.dn, dn) == 0) {
+	if (ret == LDB_SUCCESS) {
+		if (ldb_dn_compare(ac->req->op.del.dn, dn) == 0) {
+			talloc_free(dn);
+			ldb_asprintf_errstring(ldb, "objectclass: Cannot delete %s, it's the DC's rIDSet object!",
+					       ldb_dn_get_linearized(ac->req->op.del.dn));
+			return LDB_ERR_UNWILLING_TO_PERFORM;
+		}
 		talloc_free(dn);
-		ldb_asprintf_errstring(ldb, "objectclass: Cannot delete %s, it's the DC's rIDSet object!",
-				       ldb_dn_get_linearized(ac->req->op.del.dn));
-		return LDB_ERR_UNWILLING_TO_PERFORM;
 	}
 
-	talloc_free(dn);
-
 	/* crossRef objects regarding config, schema and default domain NCs */
 	if (samdb_find_attribute(ldb, ac->search_res->message, "objectClass",
 				 "crossRef") != NULL) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list