s4-dsdb: Some minor fixes in tombstone_reanimate, to make it work with acl
authorNadezhda Ivanova <nivanova@symas.com>
Tue, 4 Nov 2014 18:24:11 +0000 (20:24 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 3 Feb 2015 04:02:11 +0000 (05:02 +0100)
Change-Id: Idad221c7ecf778fd24f6017bb4c6eacac541086a
Signed-off-by: Nadezhda Ivanova <nivanova@symas.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
source4/dsdb/samdb/ldb_modules/tombstone_reanimate.c

index c175a0cbc4b5566bff58b19a83961bbb530782dd..6ff98003b1a211f798a18d47633f5ccb2cbaeae6 100644 (file)
@@ -138,7 +138,7 @@ static int _tr_do_rename(struct ldb_module *module, struct ldb_request *parent_r
                return ret;
        }
 
-       ret = dsdb_request_add_controls(req, DSDB_SEARCH_SHOW_DELETED);
+       ret = ldb_request_add_control(req, LDB_CONTROL_SHOW_DELETED_OID, false, NULL);
        if (ret != LDB_SUCCESS) {
                talloc_free(tmp_ctx);
                return ret;
@@ -155,7 +155,7 @@ static int _tr_do_rename(struct ldb_module *module, struct ldb_request *parent_r
         * Run request from the top module
         * so we get show_deleted control OID resolved
         */
-       ret = ldb_request(ldb_module_get_ctx(module), req);
+       ret = ldb_next_request(module, req);
        if (ret == LDB_SUCCESS) {
                ret = ldb_wait(req->handle, LDB_WAIT_ALL);
        }
@@ -263,7 +263,7 @@ static int tombstone_reanimate_modify(struct ldb_module *module, struct ldb_requ
        ret = _tr_do_rename(module, req, req->op.mod.message->dn, dn_new);
        if (ret != LDB_SUCCESS) {
                ldb_debug(ldb, LDB_DEBUG_ERROR, "Renaming object to %s has failed with %s\n", el_dn->values[0].data, ldb_strerror(ret));
-               if (ret != LDB_ERR_ENTRY_ALREADY_EXISTS) {
+               if (ret != LDB_ERR_ENTRY_ALREADY_EXISTS && ret != LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS ) {
                        /* Windows returns Operations Error in case we can't rename the object */
                        return LDB_ERR_OPERATIONS_ERROR;
                }
@@ -298,7 +298,7 @@ static int tombstone_reanimate_modify(struct ldb_module *module, struct ldb_requ
        }
        ret = _tr_do_modify(module, req, msg);
        if (ret != LDB_SUCCESS) {
-               return ldb_operr(ldb);
+               return ret;
        }
 
        return ldb_module_done(ac->req, NULL, NULL, LDB_SUCCESS);