summaryrefslogtreecommitdiff
path: root/source4/dsdb/samdb/ldb_modules/samldb.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-07-06 13:21:54 +1000
committerAndrew Tridgell <tridge@samba.org>2010-07-07 20:14:55 +1000
commit87df785a68c1c8043b345b71c98764ef36b76179 (patch)
treea4d3071a393661c93e97f9963e492d494241173c /source4/dsdb/samdb/ldb_modules/samldb.c
parentfc68558ab937859a91214e8675d53c0afaf3c4e6 (diff)
downloadsamba-87df785a68c1c8043b345b71c98764ef36b76179.tar.gz
samba-87df785a68c1c8043b345b71c98764ef36b76179.tar.bz2
samba-87df785a68c1c8043b345b71c98764ef36b76179.zip
s4-dsdb: use ldb_operr() in the dsdb code
this replaces "return LDB_ERR_OPERATIONS_ERROR" with "return ldb_operr(ldb)" in places in the dsdb code where we don't already explicitly set an error string. This should make is much easier to track down dsdb module bugs that result in an operations error.
Diffstat (limited to 'source4/dsdb/samdb/ldb_modules/samldb.c')
-rw-r--r--source4/dsdb/samdb/ldb_modules/samldb.c59
1 files changed, 29 insertions, 30 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c b/source4/dsdb/samdb/ldb_modules/samldb.c
index 70a6fd22c1..b9a9720018 100644
--- a/source4/dsdb/samdb/ldb_modules/samldb.c
+++ b/source4/dsdb/samdb/ldb_modules/samldb.c
@@ -103,7 +103,7 @@ static int samldb_add_step(struct samldb_ctx *ac, samldb_step_fn_t fn)
step = talloc_zero(ac, struct samldb_step);
if (step == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb_module_get_ctx(ac->module));
}
step->fn = fn;
@@ -113,7 +113,7 @@ static int samldb_add_step(struct samldb_ctx *ac, samldb_step_fn_t fn)
ac->curstep = step;
} else {
if (ac->curstep == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb_module_get_ctx(ac->module));
for (stepper = ac->curstep; stepper->next != NULL;
stepper = stepper->next);
stepper->next = step;
@@ -125,7 +125,7 @@ static int samldb_add_step(struct samldb_ctx *ac, samldb_step_fn_t fn)
static int samldb_first_step(struct samldb_ctx *ac)
{
if (ac->steps == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb_module_get_ctx(ac->module));
}
ac->curstep = ac->steps;
@@ -149,7 +149,7 @@ static int samldb_next_step(struct samldb_ctx *ac)
}
}
-static int samldb_generate_samAccountName(struct ldb_message *msg)
+static int samldb_generate_samAccountName(struct ldb_context *ldb, struct ldb_message *msg)
{
char *name;
@@ -160,7 +160,7 @@ static int samldb_generate_samAccountName(struct ldb_message *msg)
(unsigned int)generate_random(),
(unsigned int)generate_random());
if (name == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
return ldb_msg_add_steal_string(msg, "samAccountName", name);
}
@@ -220,7 +220,7 @@ static int samldb_check_samAccountName(struct samldb_ctx *ac)
ldb = ldb_module_get_ctx(ac->module);
if (ldb_msg_find_element(ac->msg, "samAccountName") == NULL) {
- ret = samldb_generate_samAccountName(ac->msg);
+ ret = samldb_generate_samAccountName(ldb, ac->msg);
if (ret != LDB_SUCCESS) {
return ret;
}
@@ -228,12 +228,12 @@ static int samldb_check_samAccountName(struct samldb_ctx *ac)
name = ldb_msg_find_attr_as_string(ac->msg, "samAccountName", NULL);
if (name == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
filter = talloc_asprintf(ac, "samAccountName=%s",
ldb_binary_encode_string(ac, name));
if (filter == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
ret = ldb_build_search_req(&req, ldb, ac,
@@ -337,12 +337,11 @@ static int samldb_allocate_sid(struct samldb_ctx *ac)
ac->sid = dom_sid_add_rid(ac, samdb_domain_sid(ldb), rid);
if (ac->sid == NULL) {
- ldb_module_oom(ac->module);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_module_oom(ac->module);
}
if ( ! samldb_msg_add_sid(ac->msg, "objectSid", ac->sid)) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
return samldb_next_step(ac);
@@ -424,12 +423,12 @@ static int samldb_dn_from_sid(struct samldb_ctx *ac)
ldb = ldb_module_get_ctx(ac->module);
if (ac->sid == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
filter = talloc_asprintf(ac, "(objectSid=%s)",
ldap_encode_ndr_dom_sid(ac, ac->sid));
if (filter == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
ret = ldb_build_search_req(&req, ldb, ac,
ldb_get_default_basedn(ldb),
@@ -455,7 +454,7 @@ static int samldb_check_primaryGroupID_1(struct samldb_ctx *ac)
rid = samdb_result_uint(ac->msg, "primaryGroupID", ~0);
ac->sid = dom_sid_add_rid(ac, samdb_domain_sid(ldb), rid);
if (ac->sid == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
ac->res_dn = NULL;
return samldb_next_step(ac);
@@ -643,7 +642,7 @@ static int samldb_add_handle_msDS_IntId(struct samldb_ctx *ac)
__location__": Searching for msDS-IntId=%d failed - %s\n",
msds_intid,
ldb_errstring(ldb));
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
id_exists = (ldb_res->count > 0);
@@ -985,7 +984,7 @@ static int samldb_fill_foreignSecurityPrincipal_object(struct samldb_ctx *ac)
}
if ( ! samldb_msg_add_sid(ac->msg, "objectSid", ac->sid)) {
talloc_free(ac);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
}
@@ -1018,7 +1017,7 @@ static int samldb_schema_info_update(struct samldb_ctx *ac)
ldb_debug_set(ldb, LDB_DEBUG_FATAL,
"samldb_schema_info_update: no dsdb_schema loaded");
DEBUG(0,(__location__ ": %s\n", ldb_errstring(ldb)));
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
werr = dsdb_module_schema_info_update(ac->module, schema, DSDB_FLAG_NEXT_MODULE);
@@ -1028,7 +1027,7 @@ static int samldb_schema_info_update(struct samldb_ctx *ac)
"dsdb_module_schema_info_update failed with %s",
win_errstr(werr));
DEBUG(0,(__location__ ": %s\n", ldb_errstring(ldb)));
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
return LDB_SUCCESS;
@@ -1069,13 +1068,13 @@ static int samldb_prim_group_change(struct samldb_ctx *ac)
sid = dom_sid_add_rid(ac, samdb_domain_sid(ldb), rid);
if (sid == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
prev_prim_group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSID=%s)",
dom_sid_string(ac, sid));
if (prev_prim_group_dn == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
/* Finds out the DN of the new primary group */
@@ -1088,7 +1087,7 @@ static int samldb_prim_group_change(struct samldb_ctx *ac)
sid = dom_sid_add_rid(ac, samdb_domain_sid(ldb), rid);
if (sid == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
new_prim_group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSID=%s)",
@@ -1166,7 +1165,7 @@ static int samldb_member_check(struct samldb_ctx *ac)
* for them */
member_dn = ldb_dn_from_ldb_val(ac, ldb, &el->values[i]);
if (!ldb_dn_validate(member_dn)) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
prim_group_rid = samdb_search_uint(ldb, ac, (uint32_t) -1,
@@ -1181,13 +1180,13 @@ static int samldb_member_check(struct samldb_ctx *ac)
sid = dom_sid_add_rid(ac, samdb_domain_sid(ldb),
prim_group_rid);
if (sid == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSID=%s)",
dom_sid_string(ac, sid));
if (group_dn == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
if (ldb_dn_compare(group_dn, ac->msg->dn) == 0) {
@@ -1218,7 +1217,7 @@ static int samldb_prim_group_users_check(struct samldb_ctx *ac)
}
status = dom_sid_split_rid(ac, sid, NULL, &rid);
if (!NT_STATUS_IS_OK(status)) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
if (rid == 0) {
/* Special object (security principal?) */
@@ -1230,7 +1229,7 @@ static int samldb_prim_group_users_check(struct samldb_ctx *ac)
"(&(primaryGroupID=%u)(objectClass=user))",
rid);
if (count < 0) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
if (count > 0) {
return LDB_ERR_ENTRY_ALREADY_EXISTS;
@@ -1257,7 +1256,7 @@ static int samldb_add(struct ldb_module *module, struct ldb_request *req)
ac = samldb_ctx_init(module, req);
if (ac == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
/* build the new msg */
@@ -1266,7 +1265,7 @@ static int samldb_add(struct ldb_module *module, struct ldb_request *req)
talloc_free(ac);
ldb_debug(ldb, LDB_DEBUG_FATAL,
"samldb_add: ldb_msg_copy failed!\n");
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
if (samdb_find_attribute(ldb, ac->msg,
@@ -1347,7 +1346,7 @@ static int samldb_modify(struct ldb_module *module, struct ldb_request *req)
ac = samldb_ctx_init(module, req);
if (ac == NULL) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb);
}
/* TODO: do not modify original request, create a new one */
@@ -1459,7 +1458,7 @@ static int samldb_delete(struct ldb_module *module, struct ldb_request *req)
ac = samldb_ctx_init(module, req);
if (ac == NULL)
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(ldb_module_get_ctx(module));
ret = samldb_prim_group_users_check(ac);
if (ret != LDB_SUCCESS) {