small fix for objectclass pb
authorMatthieu Patou <mat@matws.net>
Mon, 9 Aug 2010 19:47:31 +0000 (23:47 +0400)
committerMatthieu Patou <mat@matws.net>
Mon, 9 Aug 2010 21:01:21 +0000 (01:01 +0400)
source4/dsdb/samdb/ldb_modules/objectclass.c

index 9c2e416dcc93fdb4197b05c54dd2f2605d13a73c..b1f9483dc8d2f677fb20b7c433d1fbecede6917d 100644 (file)
@@ -1367,19 +1367,20 @@ static int objectclass_do_delete(struct oc_context *ac)
 
        /* DC's rIDSet object */
        ret = samdb_rid_set_dn(ldb, ac, &dn);
-       if (ret != LDB_SUCCESS) {
+       if (ret != LDB_SUCCESS && ret != LDB_ERR_NO_SUCH_ATTRIBUTE) {
                return ret;
        }
+       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;
+               }
 
-       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);
-
        /* crossRef objects regarding config, schema and default domain NCs */
        if (samdb_find_attribute(ldb, ac->search_res->message, "objectClass",
                                 "crossRef") != NULL) {