summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/dsdb/samdb/ldb_modules/objectclass.c8
-rw-r--r--source4/lib/ldb/common/ldb_modules.c6
2 files changed, 9 insertions, 5 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/objectclass.c b/source4/dsdb/samdb/ldb_modules/objectclass.c
index 6d40759e7b..12a6359037 100644
--- a/source4/dsdb/samdb/ldb_modules/objectclass.c
+++ b/source4/dsdb/samdb/ldb_modules/objectclass.c
@@ -389,7 +389,7 @@ static int objectclass_add(struct ldb_module *module, struct ldb_request *req)
/* return or own handle to deal with this call */
req->handle = h;
- parent_dn = ldb_dn_get_parent(ac->search_req, ac->orig_req->op.mod.message->dn);
+ parent_dn = ldb_dn_get_parent(ac, ac->orig_req->op.mod.message->dn);
if (parent_dn == NULL) {
ldb_oom(module->ldb);
return LDB_ERR_OPERATIONS_ERROR;
@@ -403,6 +403,8 @@ static int objectclass_add(struct ldb_module *module, struct ldb_request *req)
return ret;
}
+ talloc_steal(ac->search_req, parent_dn);
+
ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->search_req);
ac->step = OC_SEARCH_ADD_PARENT;
@@ -873,7 +875,7 @@ static int objectclass_rename(struct ldb_module *module, struct ldb_request *req
/* return or own handle to deal with this call */
req->handle = h;
- parent_dn = ldb_dn_get_parent(ac->search_req, ac->orig_req->op.rename.newdn);
+ parent_dn = ldb_dn_get_parent(ac, ac->orig_req->op.rename.newdn);
if (parent_dn == NULL) {
ldb_oom(module->ldb);
return LDB_ERR_OPERATIONS_ERROR;
@@ -886,7 +888,7 @@ static int objectclass_rename(struct ldb_module *module, struct ldb_request *req
if (ret != LDB_SUCCESS) {
return ret;
}
-
+ talloc_steal(ac->search_req, parent_dn);
ldb_set_timeout_from_prev_req(ac->module->ldb, ac->orig_req, ac->search_req);
ac->step = OC_SEARCH_RENAME_PARENT;
diff --git a/source4/lib/ldb/common/ldb_modules.c b/source4/lib/ldb/common/ldb_modules.c
index 9f94c90c92..87e5b2eeb3 100644
--- a/source4/lib/ldb/common/ldb_modules.c
+++ b/source4/lib/ldb/common/ldb_modules.c
@@ -347,15 +347,17 @@ int ldb_load_modules(struct ldb_context *ldb, const char *options[])
if (modules != NULL) {
ret = ldb_load_modules_list(ldb, modules, ldb->modules, &ldb->modules);
- talloc_free(modules);
if (ret != LDB_SUCCESS) {
+ talloc_free(mem_ctx);
return ret;
}
} else {
ldb_debug(ldb, LDB_DEBUG_TRACE, "No modules specified for this database");
}
- return ldb_init_module_chain(ldb, ldb->modules);
+ ret = ldb_init_module_chain(ldb, ldb->modules);
+ talloc_free(mem_ctx);
+ return ret;
}
/*