summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2011-01-17 13:39:46 +1100
committerAndrew Tridgell <tridge@samba.org>2011-01-17 05:23:04 +0100
commit8794e6dad906b9cc1eefbe03665a0035b91ac199 (patch)
treecf6e9c809ad9791333f397237139b370994f60d7
parent87f31510475c6debd56ff874130f4f5d48bef9a5 (diff)
downloadsamba-8794e6dad906b9cc1eefbe03665a0035b91ac199.tar.gz
samba-8794e6dad906b9cc1eefbe03665a0035b91ac199.tar.bz2
samba-8794e6dad906b9cc1eefbe03665a0035b91ac199.zip
s4-dsdb: replaced the calls to ldb_search() in dsdb modules with dsdb_module_search()
this ensures we follow the module stack, and set the parent on child requests
-rw-r--r--source4/dsdb/samdb/ldb_modules/rootdse.c22
-rw-r--r--source4/dsdb/samdb/ldb_modules/samldb.c21
-rw-r--r--source4/dsdb/samdb/ldb_modules/update_keytab.c13
-rw-r--r--source4/dsdb/samdb/ldb_modules/wscript_build2
4 files changed, 32 insertions, 26 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/rootdse.c b/source4/dsdb/samdb/ldb_modules/rootdse.c
index 157a8c0ae5..007af57d54 100644
--- a/source4/dsdb/samdb/ldb_modules/rootdse.c
+++ b/source4/dsdb/samdb/ldb_modules/rootdse.c
@@ -802,9 +802,9 @@ static int rootdse_init(struct ldb_module *module)
Then stuff these values into an opaque
*/
- ret = ldb_search(ldb, mem_ctx, &res,
- ldb_get_default_basedn(ldb),
- LDB_SCOPE_BASE, attrs, NULL);
+ ret = dsdb_module_search(module, mem_ctx, &res,
+ ldb_get_default_basedn(ldb),
+ LDB_SCOPE_BASE, attrs, DSDB_FLAG_NEXT_MODULE, NULL, NULL);
if (ret == LDB_SUCCESS && res->count == 1) {
int domain_behaviour_version
= ldb_msg_find_attr_as_int(res->msgs[0],
@@ -824,9 +824,9 @@ static int rootdse_init(struct ldb_module *module)
}
}
- ret = ldb_search(ldb, mem_ctx, &res,
- samdb_partitions_dn(ldb, mem_ctx),
- LDB_SCOPE_BASE, attrs, NULL);
+ ret = dsdb_module_search(module, mem_ctx, &res,
+ samdb_partitions_dn(ldb, mem_ctx),
+ LDB_SCOPE_BASE, attrs, DSDB_FLAG_NEXT_MODULE, NULL, NULL);
if (ret == LDB_SUCCESS && res->count == 1) {
int forest_behaviour_version
= ldb_msg_find_attr_as_int(res->msgs[0],
@@ -846,16 +846,16 @@ static int rootdse_init(struct ldb_module *module)
}
}
- ret = ldb_search(ldb, mem_ctx, &res,
- ldb_dn_new(mem_ctx, ldb, ""),
- LDB_SCOPE_BASE, ds_attrs, NULL);
+ ret = dsdb_module_search(module, mem_ctx, &res,
+ ldb_dn_new(mem_ctx, ldb, ""),
+ LDB_SCOPE_BASE, ds_attrs, DSDB_FLAG_NEXT_MODULE, NULL, NULL);
if (ret == LDB_SUCCESS && res->count == 1) {
struct ldb_dn *ds_dn
= ldb_msg_find_attr_as_dn(ldb, mem_ctx, res->msgs[0],
"dsServiceName");
if (ds_dn) {
- ret = ldb_search(ldb, mem_ctx, &res, ds_dn,
- LDB_SCOPE_BASE, attrs, NULL);
+ ret = dsdb_module_search(module, mem_ctx, &res, ds_dn,
+ LDB_SCOPE_BASE, attrs, DSDB_FLAG_NEXT_MODULE, NULL, NULL);
if (ret == LDB_SUCCESS && res->count == 1) {
int domain_controller_behaviour_version
= ldb_msg_find_attr_as_int(res->msgs[0],
diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c b/source4/dsdb/samdb/ldb_modules/samldb.c
index 53c45e62bc..ee0d66cc04 100644
--- a/source4/dsdb/samdb/ldb_modules/samldb.c
+++ b/source4/dsdb/samdb/ldb_modules/samldb.c
@@ -1075,8 +1075,8 @@ static int samldb_prim_group_change(struct samldb_ctx *ac)
/* Fetch informations from the existing object */
- ret = ldb_search(ldb, ac, &res, ac->msg->dn, LDB_SCOPE_BASE, attrs,
- NULL);
+ ret = dsdb_module_search(ac->module, ac, &res, ac->msg->dn, LDB_SCOPE_BASE, attrs,
+ DSDB_FLAG_NEXT_MODULE, ac->req, NULL);
if (ret != LDB_SUCCESS) {
return ret;
}
@@ -1432,8 +1432,9 @@ static int samldb_sam_accountname_check(struct samldb_ctx *ac)
/* Make sure that a "sAMAccountName" is only used once */
- ret = ldb_search(ldb, ac, &res, NULL, LDB_SCOPE_SUBTREE, no_attrs,
- "(sAMAccountName=%s)", enc_str);
+ ret = dsdb_module_search(ac->module, ac, &res, NULL, LDB_SCOPE_SUBTREE, no_attrs,
+ DSDB_FLAG_NEXT_MODULE, ac->req,
+ "(sAMAccountName=%s)", enc_str);
if (ret != LDB_SUCCESS) {
return ret;
}
@@ -1467,8 +1468,8 @@ static int samldb_member_check(struct samldb_ctx *ac)
/* Fetch informations from the existing object */
- ret = ldb_search(ldb, ac, &res, ac->msg->dn, LDB_SCOPE_BASE, attrs,
- NULL);
+ ret = dsdb_module_search(ac->module, ac, &res, ac->msg->dn, LDB_SCOPE_BASE, attrs,
+ DSDB_FLAG_NEXT_MODULE, ac->req, NULL);
if (ret != LDB_SUCCESS) {
return ret;
}
@@ -1582,8 +1583,8 @@ static int samldb_description_check(struct samldb_ctx *ac)
/* Fetch informations from the existing object */
- ret = ldb_search(ldb, ac, &res, ac->msg->dn, LDB_SCOPE_BASE, attrs,
- NULL);
+ ret = dsdb_module_search(ac->module, ac, &res, ac->msg->dn, LDB_SCOPE_BASE, attrs,
+ DSDB_FLAG_NEXT_MODULE, ac->req, NULL);
if (ret != LDB_SUCCESS) {
return ret;
}
@@ -1782,8 +1783,8 @@ static int samldb_service_principal_names_change(struct samldb_ctx *ac)
}
/* Fetch the "servicePrincipalName"s if any */
- ret = ldb_search(ldb, ac, &res, ac->msg->dn, LDB_SCOPE_BASE, attrs,
- NULL);
+ ret = dsdb_module_search(ac->module, ac, &res, ac->msg->dn, LDB_SCOPE_BASE, attrs,
+ DSDB_FLAG_NEXT_MODULE, ac->req, NULL);
if (ret != LDB_SUCCESS) {
return ret;
}
diff --git a/source4/dsdb/samdb/ldb_modules/update_keytab.c b/source4/dsdb/samdb/ldb_modules/update_keytab.c
index 6a9245f89e..81d672b5ec 100644
--- a/source4/dsdb/samdb/ldb_modules/update_keytab.c
+++ b/source4/dsdb/samdb/ldb_modules/update_keytab.c
@@ -34,6 +34,7 @@
#include "auth/credentials/credentials_krb5.h"
#include "system/kerberos.h"
#include "auth/kerberos/kerberos.h"
+#include "util.h"
struct dn_list {
struct ldb_message *msg;
@@ -78,7 +79,9 @@ static struct update_kt_ctx *update_kt_ctx_init(struct ldb_module *module,
* Just hope we are lucky and nothing breaks (using the tdb backend masks a lot
* of async issues). -SSS
*/
-static int add_modified(struct ldb_module *module, struct ldb_dn *dn, bool do_delete) {
+static int add_modified(struct ldb_module *module, struct ldb_dn *dn, bool do_delete,
+ struct ldb_request *parent)
+{
struct ldb_context *ldb = ldb_module_get_ctx(module);
struct update_kt_private *data = talloc_get_type(ldb_module_get_private(module), struct update_kt_private);
struct dn_list *item;
@@ -92,8 +95,10 @@ static int add_modified(struct ldb_module *module, struct ldb_dn *dn, bool do_de
return ldb_oom(ldb);
}
- ret = ldb_search(ldb, data, &res,
- dn, LDB_SCOPE_BASE, NULL, "%s", filter);
+ ret = dsdb_module_search(module, data, &res,
+ dn, LDB_SCOPE_BASE, NULL,
+ DSDB_FLAG_NEXT_MODULE, parent,
+ "%s", filter);
talloc_free(filter);
if (ret != LDB_SUCCESS) {
return ret;
@@ -214,7 +219,7 @@ static int ukt_search_modified_callback(struct ldb_request *req,
if (ac->found) {
/* do the dirty sync job here :/ */
- ret = add_modified(ac->module, ac->dn, ac->do_delete);
+ ret = add_modified(ac->module, ac->dn, ac->do_delete, ac->req);
}
if (ac->do_delete) {
diff --git a/source4/dsdb/samdb/ldb_modules/wscript_build b/source4/dsdb/samdb/ldb_modules/wscript_build
index 4cf1cfe19a..0b269007e4 100644
--- a/source4/dsdb/samdb/ldb_modules/wscript_build
+++ b/source4/dsdb/samdb/ldb_modules/wscript_build
@@ -240,7 +240,7 @@ bld.SAMBA_MODULE('ldb_update_keytab',
init_function='ldb_update_keytab_module_init',
module_init_name='ldb_init_module',
internal_module=False,
- deps='talloc events credentials ldb com_err KERBEROS_UTIL'
+ deps='talloc events credentials ldb com_err KERBEROS_UTIL DSDB_MODULE_HELPERS'
)