s4:dsdb Use helper function to add 'show deleted' control
[ira/wip.git] / source4 / dsdb / samdb / ldb_modules / objectclass.c
index eb35ad052ebbc6e166cff0d30d2991a66e7dd1f3..6dbafac965aa233777d3320ce523083b7faccd8c 100644 (file)
@@ -997,7 +997,6 @@ static int objectclass_rename(struct ldb_module *module, struct ldb_request *req
        struct oc_context *ac;
        struct ldb_dn *parent_dn;
        int ret;
-       struct ldb_control **ctrl;
 
        ldb = ldb_module_get_ctx(module);
 
@@ -1026,36 +1025,27 @@ static int objectclass_rename(struct ldb_module *module, struct ldb_request *req
                return LDB_ERR_OPERATIONS_ERROR;
        }
 
-       /* we have to add the show deleted control, as otherwise DRS
-          deletes will be refused as we will think the target parent
-          does not exist */
-       ctrl = talloc_array(req, struct ldb_control, 2);
-       if (!ctrl) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
-       ctrl[0] = talloc(ctrl, struct ldb_control);
-       if (!ctrl[0]) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
-       ctrl[0]->oid = LDB_CONTROL_SHOW_DELETED_OID;
-       ctrl[0]->critical = 0;
-       ctrl[0]->data = NULL;
-       ctrl[1] = NULL;
-
        /* note that the results of this search are kept and used to
           update the parentGUID in objectclass_rename_callback() */
        ret = ldb_build_search_req(&search_req, ldb,
                                   ac, parent_dn, LDB_SCOPE_BASE,
                                   "(objectClass=*)",
-                                  attrs, ctrl
+                                  attrs, NULL
                                   ac, get_search_callback,
                                   req);
        if (ret != LDB_SUCCESS) {
                return ret;
        }
 
+       /* we have to add the show deleted control, as otherwise DRS
+          deletes will be refused as we will think the target parent
+          does not exist */
+       ret = ldb_request_add_control(search_req, LDB_CONTROL_SHOW_DELETED_OID, false, NULL);
+
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
        ac->step_fn = objectclass_do_rename;
 
        return ldb_next_request(ac->module, search_req);