s4-dsdb: use ldb_operr() in the dsdb code ldb-error
authorAndrew Tridgell <tridge@samba.org>
Tue, 6 Jul 2010 03:21:54 +0000 (13:21 +1000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 6 Jul 2010 03:21:54 +0000 (13:21 +1000)
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.

43 files changed:
source4/dsdb/common/dsdb_access.c
source4/dsdb/common/util.c
source4/dsdb/repl/drepl_ridalloc.c
source4/dsdb/samdb/ldb_modules/acl.c
source4/dsdb/samdb/ldb_modules/anr.c
source4/dsdb/samdb/ldb_modules/descriptor.c
source4/dsdb/samdb/ldb_modules/extended_dn_in.c
source4/dsdb/samdb/ldb_modules/extended_dn_out.c
source4/dsdb/samdb/ldb_modules/extended_dn_store.c
source4/dsdb/samdb/ldb_modules/instancetype.c
source4/dsdb/samdb/ldb_modules/kludge_acl.c
source4/dsdb/samdb/ldb_modules/lazy_commit.c
source4/dsdb/samdb/ldb_modules/linked_attributes.c
source4/dsdb/samdb/ldb_modules/local_password.c
source4/dsdb/samdb/ldb_modules/naming_fsmo.c
source4/dsdb/samdb/ldb_modules/new_partition.c
source4/dsdb/samdb/ldb_modules/objectclass.c
source4/dsdb/samdb/ldb_modules/objectclass_attrs.c
source4/dsdb/samdb/ldb_modules/objectguid.c
source4/dsdb/samdb/ldb_modules/operational.c
source4/dsdb/samdb/ldb_modules/partition.c
source4/dsdb/samdb/ldb_modules/partition_init.c
source4/dsdb/samdb/ldb_modules/password_hash.c
source4/dsdb/samdb/ldb_modules/pdc_fsmo.c
source4/dsdb/samdb/ldb_modules/proxy.c
source4/dsdb/samdb/ldb_modules/ranged_results.c
source4/dsdb/samdb/ldb_modules/resolve_oids.c
source4/dsdb/samdb/ldb_modules/ridalloc.c
source4/dsdb/samdb/ldb_modules/rootdse.c
source4/dsdb/samdb/ldb_modules/samba3sid.c
source4/dsdb/samdb/ldb_modules/samba_dsdb.c
source4/dsdb/samdb/ldb_modules/samba_secrets.c
source4/dsdb/samdb/ldb_modules/samldb.c
source4/dsdb/samdb/ldb_modules/schema_data.c
source4/dsdb/samdb/ldb_modules/schema_load.c
source4/dsdb/samdb/ldb_modules/show_deleted.c
source4/dsdb/samdb/ldb_modules/simple_ldap_map.c
source4/dsdb/samdb/ldb_modules/subtree_delete.c
source4/dsdb/samdb/ldb_modules/subtree_rename.c
source4/dsdb/samdb/ldb_modules/update_keytab.c
source4/dsdb/samdb/ldb_modules/util.c
source4/dsdb/schema/schema_init.c
source4/dsdb/schema/schema_set.c

index ac0c73643f2018a677bbd9f97bf5b376444d6f2d..c7d8610c506307043a9894c9594a530647572924 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "includes.h"
 #include "ldb.h"
+#include "ldb_module.h"
 #include "ldb_errors.h"
 #include "libcli/security/security.h"
 #include "librpc/gen_ndr/ndr_security.h"
@@ -53,7 +54,8 @@ void dsdb_acl_debug(struct security_descriptor *sd,
                     ndr_print_struct_string(0,(ndr_print_fn_t)ndr_print_security_descriptor,"", sd)));
 }
 
-int dsdb_get_sd_from_ldb_message(TALLOC_CTX *mem_ctx,
+int dsdb_get_sd_from_ldb_message(struct ldb_context *ldb,
+                                TALLOC_CTX *mem_ctx,
                                 struct ldb_message *acl_res,
                                 struct security_descriptor **sd)
 {
@@ -67,19 +69,20 @@ int dsdb_get_sd_from_ldb_message(TALLOC_CTX *mem_ctx,
        }
        *sd = talloc(mem_ctx, struct security_descriptor);
        if(!*sd) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ndr_err = ndr_pull_struct_blob(&sd_element->values[0], *sd, *sd,
                                       (ndr_pull_flags_fn_t)ndr_pull_security_descriptor);
 
        if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        return LDB_SUCCESS;
 }
 
-int dsdb_check_access_on_dn_internal(struct ldb_result *acl_res,
+int dsdb_check_access_on_dn_internal(struct ldb_context *ldb,
+                                    struct ldb_result *acl_res,
                                     TALLOC_CTX *mem_ctx,
                                     struct security_token *token,
                                     struct ldb_dn *dn,
@@ -94,9 +97,9 @@ int dsdb_check_access_on_dn_internal(struct ldb_result *acl_res,
        uint32_t access_granted;
        int ret;
 
-       ret = dsdb_get_sd_from_ldb_message(mem_ctx, acl_res->msgs[0], &sd);
+       ret = dsdb_get_sd_from_ldb_message(ldb, mem_ctx, acl_res->msgs[0], &sd);
        if (ret != LDB_SUCCESS) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        /* Theoretically we pass the check if the object has no sd */
        if (!sd) {
@@ -105,7 +108,7 @@ int dsdb_check_access_on_dn_internal(struct ldb_result *acl_res,
        sid = samdb_result_dom_sid(mem_ctx, acl_res->msgs[0], "objectSid");
        if (guid) {
                if (!insert_in_object_tree(mem_ctx, guid, access, &root, &new_node)) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
        }
        status = sec_access_check_ds(sd, token,
@@ -146,7 +149,7 @@ int dsdb_check_access_on_dn(struct ldb_context *ldb,
        struct auth_session_info *session_info
                = (struct auth_session_info *)ldb_get_opaque(ldb, "sessionInfo");
        if(!session_info) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = ldb_search(ldb, mem_ctx, &acl_res, dn, LDB_SCOPE_BASE, acl_attrs, NULL);
@@ -155,7 +158,7 @@ int dsdb_check_access_on_dn(struct ldb_context *ldb,
                return ret;
        }
 
-       return dsdb_check_access_on_dn_internal(acl_res,
+       return dsdb_check_access_on_dn_internal(ldb, acl_res,
                                                mem_ctx,
                                                session_info->security_token,
                                                dn,
index 80736b17124256641b1dc88d427da5a33567c389..3ad230b7070c5e3d010cb9267bd0bcb9726fa8c8 100644 (file)
@@ -24,6 +24,7 @@
 #include "includes.h"
 #include "events/events.h"
 #include "ldb.h"
+#include "ldb_module.h"
 #include "ldb_errors.h"
 #include "../lib/util/util_ldb.h"
 #include "../lib/crypto/crypto.h"
@@ -801,7 +802,7 @@ int samdb_msg_add_string(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, struc
        char *s = talloc_strdup(mem_ctx, str);
        char *a = talloc_strdup(mem_ctx, attr_name);
        if (s == NULL || a == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(sam_ldb);
        }
        return ldb_msg_add_string(msg, a, s);
 }
@@ -819,7 +820,7 @@ int samdb_msg_add_dom_sid(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, stru
                                       sid,
                                       (ndr_push_flags_fn_t)ndr_push_dom_sid);
        if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(sam_ldb);
        }
        return ldb_msg_add_value(msg, attr_name, &v, NULL);
 }
@@ -853,7 +854,7 @@ int samdb_msg_add_addval(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx,
 
        v = talloc_strdup(mem_ctx, value);
        if (v == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(sam_ldb);
        }
 
        val.data = (uint8_t *) v;
@@ -883,7 +884,7 @@ int samdb_msg_add_addval(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx,
        vals = talloc_realloc(msg, el->values, struct ldb_val,
                              el->num_values + 1);
        if (vals == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(sam_ldb);
        }
        el->values = vals;
        el->values[el->num_values] = val;
@@ -909,7 +910,7 @@ int samdb_msg_add_delval(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx,
 
        v = talloc_strdup(mem_ctx, value);
        if (v == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(sam_ldb);
        }
 
        val.data = (uint8_t *) v;
@@ -939,7 +940,7 @@ int samdb_msg_add_delval(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx,
        vals = talloc_realloc(msg, el->values, struct ldb_val,
                              el->num_values + 1);
        if (vals == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(sam_ldb);
        }
        el->values = vals;
        el->values[el->num_values] = val;
@@ -995,7 +996,7 @@ int samdb_msg_add_hash(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, struct
        struct ldb_val val;
        val.data = talloc_memdup(mem_ctx, hash->hash, 16);
        if (!val.data) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(sam_ldb);
        }
        val.length = 16;
        return ldb_msg_add_value(msg, attr_name, &val, NULL);
@@ -1004,7 +1005,8 @@ int samdb_msg_add_hash(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, struct
 /*
   add a samr_Password array to a message
 */
-int samdb_msg_add_hashes(TALLOC_CTX *mem_ctx, struct ldb_message *msg,
+int samdb_msg_add_hashes(struct ldb_context *ldb,
+                        TALLOC_CTX *mem_ctx, struct ldb_message *msg,
                         const char *attr_name, struct samr_Password *hashes,
                         unsigned int count)
 {
@@ -1013,7 +1015,7 @@ int samdb_msg_add_hashes(TALLOC_CTX *mem_ctx, struct ldb_message *msg,
        val.data = talloc_array_size(mem_ctx, 16, count);
        val.length = count*16;
        if (!val.data) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        for (i=0;i<count;i++) {
                memcpy(i*16 + (char *)val.data, hashes[i].hash, 16);
@@ -1899,7 +1901,7 @@ int samdb_search_for_parent_domain(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
        const char *attrs[] = { NULL };
 
        local_ctx = talloc_new(mem_ctx);
-       if (local_ctx == NULL) return LDB_ERR_OPERATIONS_ERROR;
+       if (local_ctx == NULL) return ldb_oom(ldb);
 
        while ((sdn = ldb_dn_get_parent(local_ctx, sdn))) {
                ret = ldb_search(ldb, local_ctx, &res, sdn, LDB_SCOPE_BASE, attrs,
@@ -2387,7 +2389,7 @@ int dsdb_find_dn_by_guid(struct ldb_context *ldb,
        char *guid_str = GUID_string(mem_ctx, guid);
 
        if (!guid_str) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = dsdb_search(ldb, mem_ctx, &res, NULL, LDB_SCOPE_SUBTREE, attrs,
@@ -2527,7 +2529,7 @@ int dsdb_find_dn_by_sid(struct ldb_context *ldb,
        char *sid_str = dom_sid_string(mem_ctx, sid);
 
        if (!sid_str) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = dsdb_search(ldb, mem_ctx, &res, NULL, LDB_SCOPE_SUBTREE, attrs,
@@ -2669,7 +2671,7 @@ int dsdb_load_partition_usn(struct ldb_context *ldb, struct ldb_dn *dn,
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (!res) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = ldb_build_search_req(&req, ldb, tmp_ctx,
@@ -2687,7 +2689,7 @@ int dsdb_load_partition_usn(struct ldb_context *ldb, struct ldb_dn *dn,
        p_ctrl = talloc(req, struct dsdb_control_current_partition);
        if (p_ctrl == NULL) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        p_ctrl->version = DSDB_CONTROL_CURRENT_PARTITION_VERSION;
        p_ctrl->dn = dn;
@@ -2769,7 +2771,7 @@ int samdb_is_rodc(struct ldb_context *sam_ctx, const struct GUID *objectGUID, bo
        config_dn = ldb_get_config_basedn(sam_ctx);
        if (!config_dn) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(sam_ctx);
        }
 
        ret = dsdb_search(sam_ctx, tmp_ctx, &res, config_dn, LDB_SCOPE_SUBTREE, attrs,
@@ -2815,7 +2817,7 @@ int samdb_rodc(struct ldb_context *sam_ctx, bool *am_rodc)
 
        objectGUID = samdb_ntds_objectGUID(sam_ctx);
        if (!objectGUID) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(sam_ctx);
        }
 
        ret = samdb_is_rodc(sam_ctx, objectGUID, am_rodc);
@@ -2825,14 +2827,14 @@ int samdb_rodc(struct ldb_context *sam_ctx, bool *am_rodc)
 
        cached = talloc(sam_ctx, bool);
        if (cached == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(sam_ctx);
        }
        *cached = *am_rodc;
 
        ret = ldb_set_opaque(sam_ctx, "cache.am_rodc", cached);
        if (ret != LDB_SUCCESS) {
                talloc_free(cached);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(sam_ctx);
        }
 
        return LDB_SUCCESS;
@@ -3160,7 +3162,7 @@ int dsdb_wellknown_dn(struct ldb_context *samdb, TALLOC_CTX *mem_ctx,
                            wk_guid, ldb_dn_get_linearized(nc_root));
        if (!wkguid_dn) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(samdb);
        }
 
        ret = dsdb_search_dn(samdb, tmp_ctx, &res, dn, attrs, DSDB_SEARCH_SHOW_DELETED);
@@ -3196,7 +3198,7 @@ int dsdb_find_nc_root(struct ldb_context *samdb, TALLOC_CTX *mem_ctx, struct ldb
 
        tmp_ctx = talloc_new(samdb);
        if (tmp_ctx == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(samdb);
        }
 
        ret = ldb_search(samdb, tmp_ctx, &root_res,
@@ -3218,14 +3220,14 @@ int dsdb_find_nc_root(struct ldb_context *samdb, TALLOC_CTX *mem_ctx, struct ldb
        nc_dns = talloc_array(tmp_ctx, struct ldb_dn *, el->num_values);
        if (!nc_dns) {
               talloc_free(tmp_ctx);
-              return LDB_ERR_OPERATIONS_ERROR;
+              return ldb_oom(samdb);
        }
 
        for (i=0; i<el->num_values; i++) {
               nc_dns[i] = ldb_dn_from_ldb_val(nc_dns, samdb, &el->values[i]);
               if (nc_dns[i] == NULL) {
                       talloc_free(tmp_ctx);
-                      return LDB_ERR_OPERATIONS_ERROR;
+                      return ldb_operr(samdb);
               }
        }
 
@@ -3277,13 +3279,13 @@ int dsdb_tombstone_lifetime(struct ldb_context *ldb, uint32_t *lifetime)
        }
        dn = ldb_dn_copy(ldb, dn);
        if (!dn) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        /* see MS-ADTS section 7.1.1.2.4.1.1. There doesn't appear to
         be a wellknown GUID for this */
        if (!ldb_dn_add_child_fmt(dn, "CN=Directory Service,CN=Windows NT,CN=Services")) {
                talloc_free(dn);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        *lifetime = samdb_search_uint(ldb, dn, 180, dn, "tombstoneLifetime", "objectClass=nTDSService");
@@ -3360,7 +3362,7 @@ int dsdb_load_udv_v2(struct ldb_context *samdb, struct ldb_dn *dn, TALLOC_CTX *m
        if (!our_invocation_id) {
                DEBUG(0,(__location__ ": No invocationID on samdb - %s\n", ldb_errstring(samdb)));
                talloc_free(*cursors);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(samdb);
        }
 
        ret = dsdb_load_partition_usn(samdb, dn, &highest_usn, NULL);
@@ -3381,7 +3383,7 @@ int dsdb_load_udv_v2(struct ldb_context *samdb, struct ldb_dn *dn, TALLOC_CTX *m
 
        (*cursors) = talloc_realloc(mem_ctx, *cursors, struct drsuapi_DsReplicaCursor2, (*count)+1);
        if (! *cursors) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(samdb);
        }
 
        (*cursors)[*count].source_dsa_invocation_id = *our_invocation_id;
@@ -3419,7 +3421,7 @@ int dsdb_load_udv_v1(struct ldb_context *samdb, struct ldb_dn *dn, TALLOC_CTX *m
        *cursors = talloc_array(mem_ctx, struct drsuapi_DsReplicaCursor, *count);
        if (*cursors == NULL) {
                talloc_free(v2);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(samdb);
        }
 
        for (i=0; i<*count; i++) {
@@ -3582,7 +3584,7 @@ int dsdb_search_dn(struct ldb_context *ldb,
 
        res = talloc_zero(mem_ctx, struct ldb_result);
        if (!res) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = ldb_build_search_req(&req, ldb, res,
@@ -3642,7 +3644,7 @@ int dsdb_search(struct ldb_context *ldb,
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (!res) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        if (exp_fmt) {
@@ -3652,7 +3654,7 @@ int dsdb_search(struct ldb_context *ldb,
 
                if (!expression) {
                        talloc_free(tmp_ctx);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
        }
 
@@ -3728,7 +3730,7 @@ int dsdb_search_one(struct ldb_context *ldb,
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (!res) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        if (exp_fmt) {
@@ -3738,7 +3740,7 @@ int dsdb_search_one(struct ldb_context *ldb,
 
                if (!expression) {
                        talloc_free(tmp_ctx);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                ret = dsdb_search(ldb, tmp_ctx, &res, basedn, scope, attrs,
                                  dsdb_flags, "%s", expression);
@@ -3814,13 +3816,13 @@ int dsdb_validate_dsa_guid(struct ldb_context *ldb,
                DEBUG(1,(__location__ ": Failed to find DSA objectGUID %s for sid %s\n",
                         GUID_string(tmp_ctx, dsa_guid), dom_sid_string(tmp_ctx, sid)));
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        dn = msg->dn;
 
        if (!ldb_dn_remove_child_components(dn, 1)) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = dsdb_search_one(ldb, tmp_ctx, &msg, dn, LDB_SCOPE_BASE,
@@ -3830,7 +3832,7 @@ int dsdb_validate_dsa_guid(struct ldb_context *ldb,
                DEBUG(1,(__location__ ": Failed to find server record for DSA with objectGUID %s, sid %s\n",
                         GUID_string(tmp_ctx, dsa_guid), dom_sid_string(tmp_ctx, sid)));
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        account_dn = ldb_msg_find_attr_as_dn(ldb, tmp_ctx, msg, "serverReference");
@@ -3838,7 +3840,7 @@ int dsdb_validate_dsa_guid(struct ldb_context *ldb,
                DEBUG(1,(__location__ ": Failed to find account_dn for DSA with objectGUID %s, sid %s\n",
                         GUID_string(tmp_ctx, dsa_guid), dom_sid_string(tmp_ctx, sid)));
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        status = dsdb_get_extended_dn_sid(account_dn, &sid2, "SID");
@@ -3846,7 +3848,7 @@ int dsdb_validate_dsa_guid(struct ldb_context *ldb,
                DEBUG(1,(__location__ ": Failed to find SID for DSA with objectGUID %s, sid %s\n",
                         GUID_string(tmp_ctx, dsa_guid), dom_sid_string(tmp_ctx, sid)));
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        if (!dom_sid_equal(sid, &sid2)) {
@@ -3856,7 +3858,7 @@ int dsdb_validate_dsa_guid(struct ldb_context *ldb,
                         dom_sid_string(tmp_ctx, sid),
                         dom_sid_string(tmp_ctx, &sid2)));
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        talloc_free(tmp_ctx);
index 2baf555d3ca1629f9d564264c5339c5598790536..7b225d5f20711b34527902fe2acfda11cdc7d725 100644 (file)
@@ -24,6 +24,7 @@
 */
 
 #include "includes.h"
+#include "ldb_module.h"
 #include "dsdb/samdb/samdb.h"
 #include "smbd/service.h"
 #include "dsdb/repl/drepl_service.h"
@@ -156,7 +157,7 @@ static int drepl_ridalloc_pool_exhausted(struct ldb_context *ldb, bool *exhauste
        server_dn = ldb_dn_get_parent(tmp_ctx, samdb_ntds_settings_dn(ldb));
        if (!server_dn) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = samdb_reference_dn(ldb, tmp_ctx, server_dn, "serverReference", &machine_dn);
index d0e1c90746272cac380e12be0d24218be9bfe634..1d5e80510190102a049437065ec618bdda31f2dc 100644 (file)
@@ -105,7 +105,7 @@ int dsdb_module_check_access_on_dn(struct ldb_module *module,
        struct auth_session_info *session_info
                = (struct auth_session_info *)ldb_get_opaque(ldb, "sessionInfo");
        if(!session_info) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        ret = dsdb_module_search_dn(module, mem_ctx, &acl_res, dn,
                                    acl_attrs, DSDB_SEARCH_SHOW_DELETED);
@@ -113,7 +113,7 @@ int dsdb_module_check_access_on_dn(struct ldb_module *module,
                DEBUG(10,("access_check: failed to find object %s\n", ldb_dn_get_linearized(dn)));
                return ret;
        }
-       return dsdb_check_access_on_dn_internal(acl_res,
+       return dsdb_check_access_on_dn_internal(ldb, acl_res,
                                                mem_ctx,
                                                session_info->security_token,
                                                dn,
@@ -139,13 +139,12 @@ static int acl_module_init(struct ldb_module *module)
        if (ret != LDB_SUCCESS) {
                ldb_debug(ldb, LDB_DEBUG_ERROR,
                          "acl_module_init: Unable to register control with rootdse!\n");
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        data = talloc(module, struct acl_private);
        if (data == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        data->password_attrs = NULL;
@@ -154,8 +153,7 @@ static int acl_module_init(struct ldb_module *module)
        ldb_module_set_private(module, data);
 
        if (!mem_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = dsdb_module_search_dn(module, mem_ctx, &res,
@@ -182,8 +180,7 @@ static int acl_module_init(struct ldb_module *module)
        data->password_attrs = talloc_array(data, const char *, password_attributes->num_values + 1);
        if (!data->password_attrs) {
                talloc_free(mem_ctx);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        for (i=0; i < password_attributes->num_values; i++) {
                data->password_attrs[i] = (const char *)password_attributes->values[i].data;
@@ -263,7 +260,7 @@ static int acl_check_access_on_attribute(struct ldb_module *module,
        return ret;
 fail:
        talloc_free(tmp_ctx);
-       return LDB_ERR_OPERATIONS_ERROR;
+       return ldb_operr(ldb_module_get_ctx(module));
 }
 
 static int acl_check_access_on_class(struct ldb_module *module,
@@ -309,7 +306,7 @@ static int acl_check_access_on_class(struct ldb_module *module,
        }
        return ret;
 fail:
-       return LDB_ERR_OPERATIONS_ERROR;
+       return ldb_operr(ldb_module_get_ctx(module));
 }
 
 static int acl_allowedAttributes(struct ldb_module *module,
@@ -337,8 +334,7 @@ static int acl_allowedAttributes(struct ldb_module *module,
 
        mem_ctx = talloc_new(msg);
        if (!mem_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        oc_el = ldb_msg_find_element(sd_msg, "objectClass");
@@ -371,7 +367,7 @@ static int acl_allowedAttributes(struct ldb_module *module,
                        return LDB_SUCCESS;
                }
 
-               ret = dsdb_get_sd_from_ldb_message(mem_ctx, sd_msg, &sd);
+               ret = dsdb_get_sd_from_ldb_message(ldb_module_get_ctx(module), mem_ctx, sd_msg, &sd);
 
                if (ret != LDB_SUCCESS) {
                        return ret;
@@ -382,7 +378,7 @@ static int acl_allowedAttributes(struct ldb_module *module,
                        const struct dsdb_attribute *attr = dsdb_attribute_by_lDAPDisplayName(schema,
                                                                                        attr_list[i]);
                        if (!attr) {
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_operr(ldb);
                        }
                        /* remove constructed attributes */
                        if (attr->systemFlags & DS_FLAG_ATTR_IS_CONSTRUCTED
@@ -492,7 +488,7 @@ static int acl_childClassesEffective(struct ldb_module *module,
        ldb_msg_remove_attr(msg, "allowedChildClassesEffective");
 
        oc_el = ldb_msg_find_element(sd_msg, "objectClass");
-       ret = dsdb_get_sd_from_ldb_message(msg, sd_msg, &sd);
+       ret = dsdb_get_sd_from_ldb_message(ldb_module_get_ctx(module), msg, sd_msg, &sd);
        if (ret != LDB_SUCCESS) {
                return ret;
        }
@@ -567,7 +563,7 @@ static int acl_sDRightsEffective(struct ldb_module *module,
        }
        else {
                /* Get the security descriptor from the message */
-               ret = dsdb_get_sd_from_ldb_message(msg, sd_msg, &sd);
+               ret = dsdb_get_sd_from_ldb_message(ldb_module_get_ctx(module), msg, sd_msg, &sd);
                if (ret != LDB_SUCCESS) {
                        return ret;
                }
@@ -638,7 +634,7 @@ static int acl_add(struct ldb_module *module, struct ldb_request *req)
 
        schema = dsdb_get_schema(ldb, req);
        if (!schema) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        oc_el = ldb_msg_find_element(req->op.add.message, "objectClass");
@@ -724,7 +720,7 @@ static int acl_check_self_membership(TALLOC_CTX *mem_ctx,
        }
        member_el = ldb_msg_find_element(req->op.mod.message, "member");
        if (!member_el) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        /* user can only remove oneself */
        if (member_el->num_values == 0) {
@@ -766,7 +762,7 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx,
 
        msg = ldb_msg_copy_shallow(tmp_ctx, req->op.mod.message);
        if (msg == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
        for (l = passwordAttrs; *l != NULL; l++) {
                while ((el = ldb_msg_find_element(msg, *l)) != NULL) {
@@ -865,7 +861,7 @@ static int acl_modify(struct ldb_module *module, struct ldb_request *req)
                goto fail;
        }
 
-       ret = dsdb_get_sd_from_ldb_message(tmp_ctx, acl_res->msgs[0], &sd);
+       ret = dsdb_get_sd_from_ldb_message(ldb, tmp_ctx, acl_res->msgs[0], &sd);
        if (ret != LDB_SUCCESS) {
                DEBUG(10, ("acl_modify: cannot get descriptor\n"));
                goto fail;
@@ -1095,37 +1091,37 @@ static int acl_rename(struct ldb_module *module, struct ldb_request *req)
        schema = dsdb_get_schema(ldb, acl_res);
        if (!schema) {
                talloc_free(acl_res);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        guid = get_oc_guid_from_message(module, schema, acl_res->msgs[0]);
        if (!insert_in_object_tree(tmp_ctx, guid, SEC_ADS_WRITE_PROP,
                                   &root, &new_node)) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        };
 
        guid = attribute_schemaid_guid_by_lDAPDisplayName(schema,
                                                          "name");
        if (!insert_in_object_tree(tmp_ctx, guid, SEC_ADS_WRITE_PROP,
                                   &new_node, &new_node)) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        };
 
        rdn_name = ldb_dn_get_rdn_name(req->op.rename.olddn);
        if (rdn_name == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        guid = attribute_schemaid_guid_by_lDAPDisplayName(schema,
                                                          rdn_name);
        if (!insert_in_object_tree(tmp_ctx, guid, SEC_ADS_WRITE_PROP,
                                   &new_node, &new_node)) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        };
 
-       ret = dsdb_get_sd_from_ldb_message(req, acl_res->msgs[0], &sd);
+       ret = dsdb_get_sd_from_ldb_message(ldb, req, acl_res->msgs[0], &sd);
 
        if (ret != LDB_SUCCESS) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        /* Theoretically we pass the check if the object has no sd */
        if (!sd) {
@@ -1298,8 +1294,7 @@ static int acl_search(struct ldb_module *module, struct ldb_request *req)
 
        ac = talloc_zero(req, struct acl_context);
        if (ac == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        data = talloc_get_type(ldb_module_get_private(module), struct acl_private);
 
index 8411d98bdbf84ca6c3a5a347585fcd04d868b251..68f007ebd97dce53da0e8eb3bca9327d89b22133 100644 (file)
@@ -151,8 +151,7 @@ static int anr_replace_value(struct anr_context *ac,
                struct ldb_val *match2 = talloc(mem_ctx, struct ldb_val);
                *match2 = data_blob_const(match->data+1, match->length - 1);
                if (match2 == NULL){
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                match = match2;
                op = LDB_OP_EQUALITY;
@@ -167,8 +166,7 @@ static int anr_replace_value(struct anr_context *ac,
                        /* Inject an 'or' with the current tree */
                        tree = make_parse_list(module, mem_ctx,  LDB_OP_OR, tree, match_tree);
                        if (tree == NULL) {
-                               ldb_oom(ldb);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
                } else {
                        tree = match_tree;
@@ -186,8 +184,7 @@ static int anr_replace_value(struct anr_context *ac,
                struct ldb_val *first_match = talloc(tree, struct ldb_val);
                struct ldb_val *second_match = talloc(tree, struct ldb_val);
                if (!first_match || !second_match) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                *first_match = data_blob_const(match->data, p-match->data);
                *second_match = data_blob_const(p+1, match->length - (p-match->data) - 1);
@@ -199,8 +196,7 @@ static int anr_replace_value(struct anr_context *ac,
 
                first_split_filter = make_parse_list(module, ac,  LDB_OP_AND, match_tree_1, match_tree_2);
                if (first_split_filter == NULL){
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                
                match_tree_1 = make_match_tree(module, mem_ctx, op, "sn", first_match);
@@ -208,15 +204,13 @@ static int anr_replace_value(struct anr_context *ac,
 
                second_split_filter = make_parse_list(module, ac,  LDB_OP_AND, match_tree_1, match_tree_2);
                if (second_split_filter == NULL){
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                split_filters = make_parse_list(module, mem_ctx,  LDB_OP_OR, 
                                                first_split_filter, second_split_filter);
                if (split_filters == NULL) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                if (tree) {
@@ -331,8 +325,7 @@ static int anr_search(struct ldb_module *module, struct ldb_request *req)
 
        ac = talloc(req, struct anr_context);
        if (!ac) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ac->module = module;
@@ -345,7 +338,7 @@ static int anr_search(struct ldb_module *module, struct ldb_request *req)
 
        ret = anr_replace_subtrees(ac, req->op.search.tree, "anr", &anr_tree);
        if (ret != LDB_SUCCESS) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        if (!ac->found_anr) {
@@ -363,7 +356,7 @@ static int anr_search(struct ldb_module *module, struct ldb_request *req)
                                        ac, anr_search_callback,
                                        req);
        if (ret != LDB_SUCCESS) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        talloc_steal(down_req, anr_tree);
 
index 0e9558278ddb376543cafd1984b52f329b89f152..d96e18e15fe424bf8cc3bbabdcc5a013815c28dc 100644 (file)
@@ -675,7 +675,7 @@ static int descriptor_do_add(struct descriptor_context *ac)
        schema = dsdb_get_schema(ldb, ac);
        mem_ctx = talloc_new(ac);
        if (mem_ctx == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        switch (ac->req->operation) {
        case LDB_ADD:
@@ -692,7 +692,7 @@ static int descriptor_do_add(struct descriptor_context *ac)
                msg = ldb_msg_copy_shallow(ac, ac->req->op.mod.message);
                break;
        default:
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
 
@@ -791,7 +791,7 @@ static int descriptor_change(struct ldb_module *module, struct ldb_request *req)
                }
                break;
        default:
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        ldb_debug(ldb, LDB_DEBUG_TRACE,"descriptor_change: %s\n", ldb_dn_get_linearized(dn));
 
@@ -801,7 +801,7 @@ static int descriptor_change(struct ldb_module *module, struct ldb_request *req)
 
        ac = descriptor_init_context(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* If there isn't a parent, just go on to the add processing */
@@ -812,8 +812,7 @@ static int descriptor_change(struct ldb_module *module, struct ldb_request *req)
        /* get copy of parent DN */
        parent_dn = ldb_dn_get_parent(ac, dn);
        if (parent_dn == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = ldb_build_search_req(&search_req, ldb,
@@ -848,7 +847,7 @@ static int descriptor_search(struct ldb_module *module, struct ldb_request *req)
        ldb = ldb_module_get_ctx(module);
        ac = descriptor_init_context(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = ldb_build_search_req_ex(&down_req, ldb, ac,
@@ -884,7 +883,7 @@ static int descriptor_init(struct ldb_module *module)
        if (ret != LDB_SUCCESS) {
                ldb_debug(ldb, LDB_DEBUG_ERROR,
                        "descriptor: Unable to register control with rootdse!\n");
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        return ldb_next_init(module);
 }
index e040ee1b5e00e1e1b59645de578145bdd6386378..74417d2bbf13aaebcbb76e278824a48dcf196666 100644 (file)
@@ -279,8 +279,7 @@ static int extended_dn_in_fix(struct ldb_module *module, struct ldb_request *req
                        base_dn_filter = talloc_asprintf(req, "(objectSid=%s)", 
                                                         ldb_binary_encode(req, *sid_val));
                        if (!base_dn_filter) {
-                               ldb_oom(ldb_module_get_ctx(module));
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb_module_get_ctx(module));
                        }
                        base_dn_scope = LDB_SCOPE_SUBTREE;
                        base_dn_attrs = no_attr;
@@ -292,8 +291,7 @@ static int extended_dn_in_fix(struct ldb_module *module, struct ldb_request *req
                        base_dn_filter = talloc_asprintf(req, "(objectGUID=%s)", 
                                                         ldb_binary_encode(req, *guid_val));
                        if (!base_dn_filter) {
-                               ldb_oom(ldb_module_get_ctx(module));
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb_module_get_ctx(module));
                        }
                        base_dn_scope = LDB_SCOPE_SUBTREE;
                        base_dn_attrs = no_attr;
@@ -316,8 +314,7 @@ static int extended_dn_in_fix(struct ldb_module *module, struct ldb_request *req
 
                        wellknown_object = talloc_asprintf(req, "B:32:%s:", wkguid_dup);
                        if (!wellknown_object) {
-                               ldb_oom(ldb_module_get_ctx(module));
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb_module_get_ctx(module));
                        }
 
                        tail_str = p;
@@ -325,13 +322,11 @@ static int extended_dn_in_fix(struct ldb_module *module, struct ldb_request *req
                        base_dn = ldb_dn_new(req, ldb_module_get_ctx(module), tail_str);
                        talloc_free(wkguid_dup);
                        if (!base_dn) {
-                               ldb_oom(ldb_module_get_ctx(module));
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb_module_get_ctx(module));
                        }
                        base_dn_filter = talloc_strdup(req, "(objectClass=*)");
                        if (!base_dn_filter) {
-                               ldb_oom(ldb_module_get_ctx(module));
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb_module_get_ctx(module));
                        }
                        base_dn_scope = LDB_SCOPE_BASE;
                        base_dn_attrs = wkattr;
@@ -341,8 +336,7 @@ static int extended_dn_in_fix(struct ldb_module *module, struct ldb_request *req
 
                ac = talloc_zero(req, struct extended_search_context);
                if (ac == NULL) {
-                       ldb_oom(ldb_module_get_ctx(module));
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb_module_get_ctx(module));
                }
                
                ac->module = module;
@@ -363,7 +357,7 @@ static int extended_dn_in_fix(struct ldb_module *module, struct ldb_request *req
                                           ac, extended_base_callback,
                                           req);
                if (ret != LDB_SUCCESS) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb_module_get_ctx(module));
                }
 
                if (all_partitions) {
index 12adf16181f711908002e78b8c3f94ba6b697684..479c7ce5fa13425f21672ed637cc2e2bcc75018d 100644 (file)
@@ -96,7 +96,7 @@ static bool add_attrs(void *mem_ctx, char ***attrs, const char *attr)
 */
 
 
-static int fix_dn(struct ldb_dn *dn) 
+static int fix_dn(struct ldb_context *ldb, struct ldb_dn *dn) 
 {
        int i, ret;
        char *upper_rdn_attr;
@@ -106,7 +106,7 @@ static int fix_dn(struct ldb_dn *dn)
                upper_rdn_attr = strupper_talloc(dn,
                                                 ldb_dn_get_component_name(dn, i));
                if (!upper_rdn_attr) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                
                /* And replace it with CN=foo (we need the attribute in upper case */
@@ -338,7 +338,7 @@ static int extended_callback(struct ldb_request *req, struct ldb_reply *ares,
        }
 
        if (p && p->normalise) {
-               ret = fix_dn(ares->message->dn);
+               ret = fix_dn(ldb, ares->message->dn);
                if (ret != LDB_SUCCESS) {
                        return ldb_module_done(ac->req, NULL, NULL, ret);
                }
@@ -368,8 +368,7 @@ static int extended_callback(struct ldb_request *req, struct ldb_reply *ares,
                                                                ares->message->dn);
                        }
                        if (ret != LDB_SUCCESS) {
-                               ldb_oom(ldb);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
                }
        }
@@ -468,7 +467,7 @@ static int extended_callback(struct ldb_request *req, struct ldb_reply *ares,
                        }
 
                        if (p->normalise) {
-                               ret = fix_dn(dn);
+                               ret = fix_dn(ldb, dn);
                                if (ret != LDB_SUCCESS) {
                                        talloc_free(dsdb_dn);
                                        return ldb_module_done(ac->req, NULL, NULL, ret);
@@ -581,8 +580,7 @@ static int extended_dn_out_search(struct ldb_module *module, struct ldb_request
 
        ac = talloc_zero(req, struct extended_search_context);
        if (ac == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ac->module = module;
@@ -617,17 +615,16 @@ static int extended_dn_out_search(struct ldb_module *module, struct ldb_request
                        if (ac->remove_guid || ac->remove_sid) {
                                new_attrs = copy_attrs(ac, req->op.search.attrs);
                                if (new_attrs == NULL) {
-                                       ldb_oom(ldb);
-                                       return LDB_ERR_OPERATIONS_ERROR;
+                                       return ldb_oom(ldb);
                                }
 
                                if (ac->remove_guid) {
                                        if (!add_attrs(ac, &new_attrs, "objectGUID"))
-                                               return LDB_ERR_OPERATIONS_ERROR;
+                                               return ldb_operr(ldb);
                                }
                                if (ac->remove_sid) {
                                        if (!add_attrs(ac, &new_attrs, "objectSID"))
-                                               return LDB_ERR_OPERATIONS_ERROR;
+                                               return ldb_operr(ldb);
                                }
                                const_attrs = (const char * const *)new_attrs;
                        }
@@ -697,15 +694,13 @@ static int extended_dn_out_ldb_init(struct ldb_module *module)
        ldb_module_set_private(module, p);
 
        if (!p) {
-               ldb_oom(ldb_module_get_ctx(module));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        dn_format = talloc(p, struct dsdb_extended_dn_store_format);
        if (!dn_format) {
                talloc_free(p);
-               ldb_oom(ldb_module_get_ctx(module));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        dn_format->store_extended_dn_in_ldb = true;
@@ -722,7 +717,7 @@ static int extended_dn_out_ldb_init(struct ldb_module *module)
        if (ret != LDB_SUCCESS) {
                ldb_debug(ldb_module_get_ctx(module), LDB_DEBUG_ERROR,
                        "extended_dn_out: Unable to register control with rootdse!\n");
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        return ldb_next_init(module);
@@ -742,15 +737,13 @@ static int extended_dn_out_dereference_init(struct ldb_module *module, const cha
        ldb_module_set_private(module, p);
 
        if (!p) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        dn_format = talloc(p, struct dsdb_extended_dn_store_format);
        if (!dn_format) {
                talloc_free(p);
-               ldb_oom(ldb_module_get_ctx(module));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        dn_format->store_extended_dn_in_ldb = false;
@@ -771,7 +764,7 @@ static int extended_dn_out_dereference_init(struct ldb_module *module, const cha
        if (ret != LDB_SUCCESS) {
                ldb_debug(ldb, LDB_DEBUG_ERROR,
                        "extended_dn_out: Unable to register control with rootdse!\n");
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = ldb_next_init(module);
@@ -790,8 +783,7 @@ static int extended_dn_out_dereference_init(struct ldb_module *module, const cha
                = talloc_zero(p, struct dsdb_openldap_dereference_control);
 
        if (!p->dereference_control) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        
        for (cur = schema->attributes; cur; cur = cur->next) {
@@ -802,14 +794,12 @@ static int extended_dn_out_dereference_init(struct ldb_module *module, const cha
                        = talloc_realloc(p, dereference_control->dereference,
                                         struct dsdb_openldap_dereference *, i + 2);
                if (!dereference_control) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                dereference_control->dereference[i] = talloc(dereference_control->dereference,  
                                         struct dsdb_openldap_dereference);
                if (!dereference_control->dereference[i]) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                dereference_control->dereference[i]->source_attribute = cur->lDAPDisplayName;
                dereference_control->dereference[i]->dereference_attribute = attrs;
index 731e4c368bf518166273fdfb0547cbe680dcc58d..07d106e2225c4521e9bdf82e61d590714093646d 100644 (file)
@@ -233,7 +233,7 @@ static int extended_store_replace(struct extended_dn_context *ac,
 
        os = talloc_zero(ac, struct extended_dn_replace_list);
        if (!os) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ac->ldb);
        }
 
        os->ac = ac;
@@ -307,7 +307,7 @@ static int extended_dn_add(struct ldb_module *module, struct ldb_request *req)
 
        ac = extended_dn_context_init(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        if (!ac->schema) {
@@ -333,8 +333,7 @@ static int extended_dn_add(struct ldb_module *module, struct ldb_request *req)
                if (!ac->new_req) {
                        struct ldb_message *msg = ldb_msg_copy(ac, req->op.add.message);
                        if (!msg) {
-                               ldb_oom(ldb_module_get_ctx(module));
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb_module_get_ctx(module));
                        }
                   
                        ret = ldb_build_add_req(&ac->new_req, ac->ldb, ac, msg, req->controls, ac, extended_final_callback, req);
@@ -382,7 +381,7 @@ static int extended_dn_modify(struct ldb_module *module, struct ldb_request *req
 
        ac = extended_dn_context_init(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        if (!ac->schema) {
@@ -409,8 +408,7 @@ static int extended_dn_modify(struct ldb_module *module, struct ldb_request *req
                        struct ldb_message *msg = ldb_msg_copy(ac, req->op.mod.message);
                        if (!msg) {
                                talloc_free(ac);
-                               ldb_oom(ac->ldb);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ac->ldb);
                        }
                   
                        ret = ldb_build_mod_req(&ac->new_req, ac->ldb, ac, msg, req->controls, ac, extended_final_callback, req);
index f71a8d39480f7f6c60e55c11b6544b28b3c77d5a..7360c7c993fee9bfac660d7d85c78f2f7ef8abf0 100644 (file)
@@ -118,7 +118,7 @@ static int instancetype_add(struct ldb_module *module, struct ldb_request *req)
                 * entries (lost+found, deleted objects) */
                ac = talloc(req, struct it_context);
                if (ac == NULL) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                ac->module = module;
                ac->req = req;
@@ -140,8 +140,7 @@ static int instancetype_add(struct ldb_module *module, struct ldb_request *req)
        /* we have to copy the message as the caller might have it as a const */
        msg = ldb_msg_copy_shallow(req, req->op.add.message);
        if (msg == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /*
@@ -151,8 +150,7 @@ static int instancetype_add(struct ldb_module *module, struct ldb_request *req)
 
        ret = ldb_msg_add_fmt(msg, "instanceType", "%u", instance_type);
        if (ret != LDB_SUCCESS) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = ldb_build_add_req(&down_req, ldb, req,
index 42f0a306f43e34f731f0bc84072d5f7b3ea5f28d..86f9bc43cce0c5fc7423299ad17823c853af4195 100644 (file)
@@ -115,8 +115,7 @@ static int kludge_acl_allowedAttributes(struct ldb_context *ldb, struct ldb_mess
        
        mem_ctx = talloc_new(msg);
        if (!mem_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /* To ensure that oc_el is valid, we must look for it after 
@@ -323,8 +322,7 @@ static int kludge_acl_search(struct ldb_module *module, struct ldb_request *req)
 
        ac = talloc(req, struct kludge_acl_context);
        if (ac == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        data = talloc_get_type(ldb_module_get_private(module), struct kludge_private_data);
@@ -457,8 +455,7 @@ static int kludge_acl_init(struct ldb_module *module)
 
        data = talloc(module, struct kludge_private_data);
        if (data == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        data->password_attrs = NULL;
@@ -467,8 +464,7 @@ static int kludge_acl_init(struct ldb_module *module)
        ldb_module_set_private(module, data);
 
        if (!mem_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = ldb_search(ldb, mem_ctx, &res,
@@ -495,8 +491,7 @@ static int kludge_acl_init(struct ldb_module *module)
        data->password_attrs = talloc_array(data, const char *, password_attributes->num_values + 1);
        if (!data->password_attrs) {
                talloc_free(mem_ctx);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        for (i=0; i < password_attributes->num_values; i++) {
                data->password_attrs[i] = (const char *)password_attributes->values[i].data;    
index b4eaf50d5152e56796dd0e7de81c949c897a62df..5c9c772f08a6c9bc83e331ee684ab93ee1d7503b 100644 (file)
@@ -113,7 +113,7 @@ static int unlazy_init(struct ldb_module *module)
        if (ret != LDB_SUCCESS) {
                ldb_debug(ldb, LDB_DEBUG_ERROR,
                        "lazy_commit: Unable to register control with rootdse!\n");
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        return ldb_next_init(module);
index 8648ab3bfd44a7b4ce43f0f447626a8d98971f59..67ae236fb190cf1074c5182f540200ad005e5e81 100644 (file)
@@ -103,7 +103,7 @@ static int la_guid_from_dn(struct la_context *ac, struct ldb_dn *dn, struct GUID
        if (!NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_NOT_FOUND)) {
                DEBUG(4,(__location__ ": Unable to parse GUID for dn %s\n",
                         ldb_dn_get_linearized(dn)));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(ac->module));
        }
 
        ret = dsdb_find_guid_by_dn(ldb_module_get_ctx(ac->module), dn, guid);
@@ -138,8 +138,7 @@ static int la_store_op(struct la_context *ac,
 
        os = talloc_zero(ac, struct la_op_store);
        if (!os) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        os->op = op;
@@ -162,8 +161,7 @@ static int la_store_op(struct la_context *ac,
 
        os->name = talloc_strdup(os, name);
        if (!os->name) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /* Do deletes before adds */
@@ -209,7 +207,7 @@ static int linked_attributes_add(struct ldb_module *module, struct ldb_request *
 
        ac = linked_attributes_init(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        if (!ac->schema) {
@@ -434,7 +432,7 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
 
        ac = linked_attributes_init(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        if (!ac->schema) {
@@ -444,8 +442,7 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
 
        ac->rc = talloc_zero(ac, struct replace_context);
        if (!ac->rc) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        for (i=0; i < req->op.mod.message->num_elements; i++) {
@@ -536,8 +533,7 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
                                                   struct ldb_message_element,
                                                   ac->rc->num_elements +1);
                        if (!search_el) {
-                               ldb_oom(ldb);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
                        ac->rc->el = search_el;
 
@@ -552,8 +548,7 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
 
                attrs = talloc_array(ac->rc, const char *, ac->rc->num_elements + 1);
                if (!attrs) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                for (i = 0; ac->rc && i < ac->rc->num_elements; i++) {
                        attrs[i] = ac->rc->el[i].name;
@@ -724,8 +719,7 @@ static int linked_attributes_rename(struct ldb_module *module, struct ldb_reques
 
        schema = dsdb_get_schema(ldb, res);
        if (!schema) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        msg = res->msgs[0];
@@ -760,7 +754,7 @@ static int la_queue_mod_request(struct la_context *ac)
 
        if (la_private == NULL) {
                ldb_debug(ldb_module_get_ctx(ac->module), LDB_DEBUG_ERROR, __location__ ": No la_private transaction setup\n");
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(ac->module));
        }
 
        talloc_steal(la_private, ac);
@@ -935,8 +929,7 @@ static int la_do_op_request(struct ldb_module *module, struct la_context *ac, st
        /* Create the modify request */
        new_msg = ldb_msg_new(ac);
        if (!new_msg) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = la_find_dn_target(module, ac, &op->guid, &new_msg->dn);
@@ -956,8 +949,7 @@ static int la_do_op_request(struct ldb_module *module, struct la_context *ac, st
        }
        ret_el->values = talloc_array(new_msg, struct ldb_val, 1);
        if (!ret_el->values) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ret_el->num_values = 1;
        if (op->op == LA_OP_ADD) {
@@ -1021,7 +1013,7 @@ static int linked_attributes_start_transaction(struct ldb_module *module)
        talloc_free(la_private);
        la_private = talloc(module, struct la_private);
        if (la_private == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
        la_private->la_list = NULL;
        ldb_module_set_private(module, la_private);
index 4f9cfd63d4ac6c89d820d4907a27ee407462e8ee..942b5a25435bcb7f697e4b0cd5fc4ac9ecdb5c93 100644 (file)
@@ -187,12 +187,12 @@ static int local_password_add(struct ldb_module *module, struct ldb_request *req
        /* From here, we assume we have password attributes to split off */
        ac = lpdb_init_context(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        remote_message = ldb_msg_copy_shallow(remote_req, req->op.add.message);
        if (remote_message == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* Remove any password attributes from the remote message */
@@ -205,7 +205,7 @@ static int local_password_add(struct ldb_module *module, struct ldb_request *req
 
        ac->local_message = ldb_msg_copy_shallow(ac, req->op.add.message);
        if (ac->local_message == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* Remove anything seen in the remote message from the local
@@ -232,7 +232,7 @@ static int local_password_add(struct ldb_module *module, struct ldb_request *req
                                     PASSWORD_GUID_ATTR "=%s",
                                     GUID_string(ac->local_message,
                                                        &objectGUID)))) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = ldb_build_add_req(&remote_req, ldb, ac,
@@ -339,12 +339,12 @@ static int local_password_modify(struct ldb_module *module, struct ldb_request *
        /* From here, we assume we have password attributes to split off */
        ac = lpdb_init_context(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        remote_message = ldb_msg_copy_shallow(ac, ac->req->op.mod.message);
        if (remote_message == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* Remove any password attributes from the remote message */
@@ -354,7 +354,7 @@ static int local_password_modify(struct ldb_module *module, struct ldb_request *
 
        ac->local_message = ldb_msg_copy_shallow(ac, ac->req->op.mod.message);
        if (ac->local_message == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* Remove anything seen in the remote message from the local
@@ -571,7 +571,7 @@ static int local_password_delete(struct ldb_module *module,
        /* From here, we assume we have password attributes to split off */
        ac = lpdb_init_context(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = ldb_build_del_req(&remote_req, ldb, ac,
@@ -769,7 +769,7 @@ static int lpdb_local_search(struct lpdb_context *ac)
                                   ac, lpdb_local_search_callback,
                                   ac->req);
        if (ret != LDB_SUCCESS) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        return ldb_next_request(ac->module, local_req);
@@ -1046,7 +1046,7 @@ static int local_password_search(struct ldb_module *module, struct ldb_request *
 
        ac = lpdb_init_context(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* Remote search is for all attributes: if the remote LDAP server has these attributes, then it overrides the local database */
@@ -1055,7 +1055,7 @@ static int local_password_search(struct ldb_module *module, struct ldb_request *
                        search_attrs = ldb_attr_list_copy_add(ac, req->op.search.attrs, "objectGUID");
                        ac->added_objectGUID = true;
                        if (!search_attrs) {
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_operr(ldb);
                        }
                } else {
                        search_attrs = req->op.search.attrs;
@@ -1064,7 +1064,7 @@ static int local_password_search(struct ldb_module *module, struct ldb_request *
                        search_attrs = ldb_attr_list_copy_add(ac, search_attrs, "objectClass");
                        ac->added_objectClass = true;
                        if (!search_attrs) {
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_operr(ldb);
                        }
                }
        } else {
index 3a10a604ec60af1b31d9e0043f08b9d0a198f920..5023657d865ad480ede48d53485e7c8bd42d00bf 100644 (file)
@@ -47,8 +47,7 @@ static int naming_fsmo_init(struct ldb_module *module)
 
        mem_ctx = talloc_new(module);
        if (!mem_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        naming_dn = samdb_partitions_dn(ldb, mem_ctx);
@@ -61,8 +60,7 @@ static int naming_fsmo_init(struct ldb_module *module)
 
        naming_fsmo = talloc_zero(mem_ctx, struct dsdb_naming_fsmo);
        if (!naming_fsmo) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ldb_module_set_private(module, naming_fsmo);
 
@@ -84,8 +82,7 @@ static int naming_fsmo_init(struct ldb_module *module)
        }
 
        if (ldb_set_opaque(ldb, "dsdb_naming_fsmo", naming_fsmo) != LDB_SUCCESS) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        talloc_steal(module, naming_fsmo);
index 63c920077561e105204d8941524377667f4bccea..9a7917385b3418908b1e4481f8f89ce196eb0d13 100644 (file)
@@ -114,8 +114,7 @@ static int np_part_search_callback(struct ldb_request *req, struct ldb_reply *ar
        /* Now that we know it does not exist, we can try and create the partition */
        ex_op = talloc(ac, struct dsdb_create_partition_exop);
        if (ex_op == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        
        ex_op->new_dn = ac->req->op.add.message->dn;
@@ -175,7 +174,7 @@ static int new_partition_add(struct ldb_module *module, struct ldb_request *req)
                 * record already exists */
                ac = talloc(req, struct np_context);
                if (ac == NULL) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                ac->module = module;
                ac->req = req;
index ed97a7d42921dee42efacf05450b44c56d8d2455..234f82c468a02af4dcb2bd6b5b2332fef6d5761e 100644 (file)
@@ -136,8 +136,7 @@ static int objectclass_sort(struct ldb_module *module,
        for (i=0; i < objectclass_element->num_values; i++) {
                current = talloc(mem_ctx, struct class_list);
                if (!current) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                current->objectclass = dsdb_class_by_lDAPDisplayName_ldb_val(schema, &objectclass_element->values[i]);
                if (!current->objectclass) {
@@ -311,7 +310,8 @@ static int oc_op_callback(struct ldb_request *req, struct ldb_reply *ares)
     CN=Admins,CN=Users,DC=samba,DC=example,DC=com
    
  */
-static int fix_dn(TALLOC_CTX *mem_ctx, 
+static int fix_dn(struct ldb_context *ldb,
+                 TALLOC_CTX *mem_ctx, 
                  struct ldb_dn *newdn, struct ldb_dn *parent_dn, 
                  struct ldb_dn **fixed_dn) 
 {
@@ -325,12 +325,12 @@ static int fix_dn(TALLOC_CTX *mem_ctx,
        upper_rdn_attr = strupper_talloc(*fixed_dn, 
                                         ldb_dn_get_rdn_name(newdn));
        if (!upper_rdn_attr) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* Create a new child */
        if (ldb_dn_add_child_fmt(*fixed_dn, "X=X") == false) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
 
@@ -386,12 +386,12 @@ static int objectclass_add(struct ldb_module *module, struct ldb_request *req)
                        val = ldb_dn_get_component_val(req->op.add.message->dn,
                                                       ldb_dn_get_comp_num(req->op.add.message->dn) - 1);
                        if (val == NULL) {
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_operr(ldb);
                        }
                        value = talloc_asprintf(req, "ldap://%s/%s", val->data,
                                                ldb_dn_get_linearized(req->op.add.message->dn));
                        if (value == NULL) {
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
 
                        return ldb_module_send_referral(req, value);
@@ -407,7 +407,7 @@ static int objectclass_add(struct ldb_module *module, struct ldb_request *req)
 
        ac = oc_init_context(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* If there isn't a parent, just go on to the add processing */
@@ -418,8 +418,7 @@ static int objectclass_add(struct ldb_module *module, struct ldb_request *req)
        /* get copy of parent DN */
        parent_dn = ldb_dn_get_parent(ac, ac->req->op.add.message->dn);
        if (parent_dn == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = ldb_build_search_req(&search_req, ldb,
@@ -470,7 +469,7 @@ static int objectclass_do_add(struct oc_context *ac)
        } else {
                /* Fix up the DN to be in the standard form, taking
                 * particular care to match the parent DN */
-               ret = fix_dn(msg, 
+               ret = fix_dn(ldb, msg, 
                             ac->req->op.add.message->dn,
                             ac->search_res->message->dn,
                             &msg->dn);
@@ -483,8 +482,7 @@ static int objectclass_do_add(struct oc_context *ac)
 
        mem_ctx = talloc_new(ac);
        if (mem_ctx == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        if (ac->schema != NULL) {
@@ -494,7 +492,7 @@ static int objectclass_do_add(struct oc_context *ac)
                if (!objectclass_element) {
                        /* Where did it go?  bail now... */
                        talloc_free(mem_ctx);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
                ret = objectclass_sort(ac->module, ac->schema, mem_ctx,
                                       objectclass_element, &sorted);
@@ -518,9 +516,8 @@ static int objectclass_do_add(struct oc_context *ac)
                for (current = sorted; current; current = current->next) {
                        value = talloc_strdup(msg, current->objectclass->lDAPDisplayName);
                        if (value == NULL) {
-                               ldb_oom(ldb);
                                talloc_free(mem_ctx);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
                        ret = ldb_msg_add_string(msg, "objectClass", value);
                        if (ret != LDB_SUCCESS) {
@@ -601,9 +598,8 @@ static int objectclass_do_add(struct oc_context *ac)
                                value = talloc_strdup(msg, objectclass->defaultObjectCategory);
                        }
                        if (value == NULL) {
-                               ldb_oom(ldb);
                                talloc_free(mem_ctx);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
                        ldb_msg_add_string(msg, "objectCategory", value);
                }
@@ -699,7 +695,7 @@ static int objectclass_modify(struct ldb_module *module, struct ldb_request *req
 
        ac = oc_init_context(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* Without schema, there isn't much to do here */
@@ -710,7 +706,7 @@ static int objectclass_modify(struct ldb_module *module, struct ldb_request *req
 
        msg = ldb_msg_copy_shallow(ac, req->op.mod.message);
        if (msg == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* For now change everything except the objectclasses */
@@ -808,36 +804,34 @@ static int objectclass_do_mod(struct oc_context *ac)
 
        /* we should always have a valid entry when we enter here */
        if (ac->search_res == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        oc_el_entry = ldb_msg_find_element(ac->search_res->message,
                                           "objectClass");
        if (oc_el_entry == NULL) {
                /* existing entry without a valid object class? */
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        oc_el_change = ldb_msg_find_element(ac->req->op.mod.message,
                                            "objectClass");
        if (oc_el_change == NULL) {
                /* we should have an objectclass change operation */
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* use a new message structure */
        msg = ldb_msg_new(ac);
        if (msg == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        msg->dn = ac->req->op.mod.message->dn;
 
        mem_ctx = talloc_new(ac);
        if (mem_ctx == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        switch (oc_el_change->flags & LDB_FLAG_MOD_MASK) {
@@ -858,9 +852,8 @@ static int objectclass_do_mod(struct oc_context *ac)
                                              struct ldb_val,
                                              oc_el_entry->num_values + 1);
                        if (vals == NULL) {
-                               ldb_oom(ldb);
                                talloc_free(mem_ctx);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
                        oc_el_entry->values = vals;
                        oc_el_entry->values[oc_el_entry->num_values] =
@@ -906,7 +899,7 @@ static int objectclass_do_mod(struct oc_context *ac)
                                                        oc_el_entry);
                if (objectclass == NULL) {
                        talloc_free(mem_ctx);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
 
                /* Merge the two message elements */
@@ -974,9 +967,8 @@ static int objectclass_do_mod(struct oc_context *ac)
                value = talloc_strdup(msg,
                                      current->objectclass->lDAPDisplayName);
                if (value == NULL) {
-                       ldb_oom(ldb);
                        talloc_free(mem_ctx);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                ret = ldb_msg_add_string(msg, "objectClass", value);
                if (ret != LDB_SUCCESS) {
@@ -1049,7 +1041,7 @@ static int objectclass_rename(struct ldb_module *module, struct ldb_request *req
 
        ac = oc_init_context(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        parent_dn = ldb_dn_get_parent(ac, req->op.rename.newdn);
@@ -1155,12 +1147,12 @@ static int objectclass_do_rename2(struct oc_context *ac)
                                                   "objectClass");
                if (oc_el_entry == NULL) {
                        /* existing entry without a valid object class? */
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
                objectclass = get_last_structural_class(ac->schema, oc_el_entry);
                if (objectclass == NULL) {
                        /* existing entry without a valid object class? */
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
 
                rdn_name = ldb_dn_get_rdn_name(ac->req->op.rename.newdn);
@@ -1178,7 +1170,7 @@ static int objectclass_do_rename2(struct oc_context *ac)
                                                    "objectClass");
                if (oc_el_parent == NULL) {
                        /* existing entry without a valid object class? */
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
 
                for (i=0; allowed_class == false && i < oc_el_parent->num_values; i++) {
@@ -1218,7 +1210,7 @@ static int objectclass_do_rename2(struct oc_context *ac)
 
        /* Fix up the DN to be in the standard form, taking
         * particular care to match the parent DN */
-       ret = fix_dn(ac,
+       ret = fix_dn(ldb, ac,
                     ac->req->op.rename.newdn,
                     ac->search_res2->message->dn,
                     &fixed_dn);
@@ -1269,7 +1261,7 @@ static int objectclass_delete(struct ldb_module *module, struct ldb_request *req
 
        ac = oc_init_context(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* this looks up the entry object for fetching some important
index 36bd86072dbd27ba39c9c3d43f1c0f1b6f52155a..6cfecc0d72d751b97aac5d08b6d92b3c1cfec6b1 100644 (file)
@@ -88,8 +88,7 @@ static int attr_handler(struct oc_context *ac)
                msg = ldb_msg_copy_shallow(ac, ac->req->op.mod.message);
        }
        if (msg == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /* Check if attributes exist in the schema, if the values match,
@@ -167,7 +166,7 @@ static int attr_handler2(struct oc_context *ac)
        ldb = ldb_module_get_ctx(ac->module);
 
        if (ac->search_res == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* We rely here on the preceeding "objectclass" LDB module which did
@@ -175,7 +174,7 @@ static int attr_handler2(struct oc_context *ac)
        oc_element = ldb_msg_find_element(ac->search_res->message,
                                          "objectClass");
        if (oc_element == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        must_contain = dsdb_full_attribute_list(ac, ac->schema, oc_element,
@@ -185,7 +184,7 @@ static int attr_handler2(struct oc_context *ac)
        found_must_contain = const_str_list(str_list_copy(ac, must_contain));
        if ((must_contain == NULL) || (may_contain == NULL)
            || (found_must_contain == NULL)) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* Check if all specified attributes are valid in the given
@@ -195,7 +194,7 @@ static int attr_handler2(struct oc_context *ac)
                attr = dsdb_attribute_by_lDAPDisplayName(ac->schema,
                                                         msg->elements[i].name);
                if (attr == NULL) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
 
                /* Check if they're single-valued if this is requested */
@@ -365,7 +364,7 @@ static int objectclass_attrs_add(struct ldb_module *module,
 
        ac = oc_init_context(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* without schema, there isn't much to do here */
@@ -394,7 +393,7 @@ static int objectclass_attrs_modify(struct ldb_module *module,
 
        ac = oc_init_context(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* without schema, there isn't much to do here */
index 7f95c9788b7611435b2ecd80df63a773e9a3e74e..b7dbb51bd78a36b9ae4b14d316c5dff21911f7da 100644 (file)
@@ -158,7 +158,7 @@ static int objectguid_add(struct ldb_module *module, struct ldb_request *req)
 
        ac = talloc(req, struct og_context);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ac->module = module;
        ac->req = req;
@@ -167,7 +167,7 @@ static int objectguid_add(struct ldb_module *module, struct ldb_request *req)
        msg = ldb_msg_copy_shallow(ac, req->op.add.message);
        if (msg == NULL) {
                talloc_free(down_req);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* a new GUID */
@@ -180,7 +180,7 @@ static int objectguid_add(struct ldb_module *module, struct ldb_request *req)
        
        if (add_time_element(msg, "whenCreated", t) != 0 ||
            add_time_element(msg, "whenChanged", t) != 0) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* Get a sequence number from the backend */
@@ -190,7 +190,7 @@ static int objectguid_add(struct ldb_module *module, struct ldb_request *req)
        if (ret == LDB_SUCCESS) {
                if (add_uint64_element(msg, "uSNCreated", seq_num) != 0 ||
                    add_uint64_element(msg, "uSNChanged", seq_num) != 0) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
        }
 
@@ -229,7 +229,7 @@ static int objectguid_modify(struct ldb_module *module, struct ldb_request *req)
 
        ac = talloc(req, struct og_context);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ac->module = module;
        ac->req = req;
@@ -237,18 +237,18 @@ static int objectguid_modify(struct ldb_module *module, struct ldb_request *req)
        /* we have to copy the message as the caller might have it as a const */
        msg = ldb_msg_copy_shallow(ac, req->op.mod.message);
        if (msg == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        if (add_time_element(msg, "whenChanged", t) != 0) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* Get a sequence number from the backend */
        ret = ldb_sequence_number(ldb, LDB_SEQ_NEXT, &seq_num);
        if (ret == LDB_SUCCESS) {
                if (add_uint64_element(msg, "uSNChanged", seq_num) != 0) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
        }
 
index f249b357f87fac0a49ddc5dd988149f74f98afef..03502d3de34ee05ac295f51d2a559e65c4504ebb 100644 (file)
@@ -93,7 +93,7 @@ static int construct_canonical_name(struct ldb_module *module,
        char *canonicalName;
        canonicalName = ldb_dn_canonical_string(msg, msg->dn);
        if (canonicalName == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
        return ldb_msg_add_steal_string(msg, "canonicalName", canonicalName);
 }
@@ -146,8 +146,7 @@ static int construct_token_groups(struct ldb_module *module,
        status = auth_context_create_from_ldb(tmp_ctx, ldb, &auth_context);
        if (NT_STATUS_EQUAL(status, NT_STATUS_NO_MEMORY)) {
                talloc_free(tmp_ctx);
-               ldb_module_oom(module);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        } else if (!NT_STATUS_IS_OK(status)) {
                ldb_set_errstring(ldb, "Cannot provide tokenGroups attribute, could not create authContext");
                talloc_free(tmp_ctx);
@@ -157,8 +156,7 @@ static int construct_token_groups(struct ldb_module *module,
        status = auth_get_server_info_principal(tmp_ctx, auth_context, NULL, msg->dn, &server_info);
        if (NT_STATUS_EQUAL(status, NT_STATUS_NO_MEMORY)) {
                talloc_free(tmp_ctx);
-               ldb_module_oom(module);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        } else if (NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_USER)) {
                /* Not a user, we have no tokenGroups */
                talloc_free(tmp_ctx);
@@ -172,8 +170,7 @@ static int construct_token_groups(struct ldb_module *module,
        status = auth_generate_session_info(tmp_ctx, auth_context, server_info, 0, &session_info);
        if (NT_STATUS_EQUAL(status, NT_STATUS_NO_MEMORY)) {
                talloc_free(tmp_ctx);
-               ldb_module_oom(module);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        } else if (!NT_STATUS_IS_OK(status)) {
                talloc_free(tmp_ctx);
                ldb_asprintf_errstring(ldb, "Cannot provide tokenGroups attribute: auth_generate_session_info failed: %s", nt_errstr(status));
@@ -236,7 +233,7 @@ static int construct_parent_guid(struct ldb_module *module,
        v = data_blob_dup_talloc(res, parent_guid);
        if (!v.data) {
                talloc_free(res);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
        ret = ldb_msg_add_steal_value(msg, "parentGUID", &v);
        talloc_free(res);
@@ -284,21 +281,21 @@ static int construct_msds_isrodc_with_dn(struct ldb_module *module,
        ldb = ldb_module_get_ctx(module);
        if (!ldb) {
                DEBUG(4, (__location__ ": Failed to get ldb \n"));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        dn = ldb_dn_new(msg, ldb, (const char *)object_category->values[0].data);
        if (!dn) {
                DEBUG(4, (__location__ ": Failed to create dn from %s \n",
                          (const char *)object_category->values[0].data));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        val = ldb_dn_get_rdn_val(dn);
        if (!val) {
                DEBUG(4, (__location__ ": Failed to get rdn val from %s \n",
                          ldb_dn_get_linearized(dn)));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        if (strequal((const char *)val->data, "NTDS-DSA")) {
@@ -323,7 +320,7 @@ static int construct_msds_isrodc_with_server_dn(struct ldb_module *module,
        if (!ldb_dn_add_child_fmt(server_dn, "CN=NTDS Settings")) {
                DEBUG(4, (__location__ ": Failed to add child to %s \n",
                          ldb_dn_get_linearized(server_dn)));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        ret = dsdb_module_search_dn(module, msg, &res, server_dn, attr_obj_cat, 0);
@@ -390,7 +387,7 @@ static int construct_msds_isrodc(struct ldb_module *module,
        if (!object_class) {
                DEBUG(4,(__location__ ": Can't get objectClass for %s \n",
                         ldb_dn_get_linearized(msg->dn)));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        for (i=0; i<object_class->num_values; i++) {
@@ -460,7 +457,7 @@ static int construct_msds_keyversionnumber(struct ldb_module *module,
        if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                DEBUG(0,(__location__ ": Failed to parse replPropertyMetaData for %s when trying to add msDS-KeyVersionNumber\n",
                         ldb_dn_get_linearized(msg->dn)));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        if (omd->version != 1) {
@@ -732,7 +729,7 @@ static int operational_search(struct ldb_module *module, struct ldb_request *req
 
        ac = talloc(req, struct operational_context);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ac->module = module;
@@ -777,7 +774,7 @@ static int operational_search(struct ldb_module *module, struct ldb_request *req
                                                                               : ac->attrs, 
                                                                               search_sub[i].extra_attr);
                                        if (search_attrs2 == NULL) {
-                                               return LDB_ERR_OPERATIONS_ERROR;
+                                               return ldb_operr(ldb);
                                        }
                                        /* may be NULL, talloc_free() doesn't mind */
                                        talloc_free(search_attrs);
@@ -787,7 +784,7 @@ static int operational_search(struct ldb_module *module, struct ldb_request *req
                                if (!search_attrs) {
                                        search_attrs = ldb_attr_list_copy(req, ac->attrs);
                                        if (search_attrs == NULL) {
-                                               return LDB_ERR_OPERATIONS_ERROR;
+                                               return ldb_operr(ldb);
                                        }
                                }
                                /* Despite the ldb_attr_list_copy_add, this is safe as that fn only adds to the end */
@@ -806,7 +803,7 @@ static int operational_search(struct ldb_module *module, struct ldb_request *req
                                        ac, operational_callback,
                                        req);
        if (ret != LDB_SUCCESS) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* perform the search */
@@ -827,8 +824,7 @@ static int operational_init(struct ldb_module *ctx)
 
        data = talloc_zero(ctx, struct operational_data);
        if (!data) {
-               ldb_module_oom(ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(ctx);
        }
 
        ldb_module_set_private(ctx, data);
index ba695d2221895ccf2a0b08f28f855f26e78e7fde..e6a315d2ef85953127fdf672b1daae93cd0a1125 100644 (file)
@@ -244,8 +244,7 @@ static int partition_prep_request(struct partition_context *ac,
                                        struct part_request,
                                        ac->num_requests + 1);
        if (ac->part_req == NULL) {
-               ldb_oom(ldb_module_get_ctx(ac->module));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(ac->module));
        }
 
        switch (ac->req->operation) {
@@ -314,8 +313,7 @@ static int partition_prep_request(struct partition_context *ac,
                req->controls = talloc_memdup(req, ac->req->controls,
                                        talloc_get_size(ac->req->controls));
                if (req->controls == NULL) {
-                       ldb_oom(ldb_module_get_ctx(ac->module));
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb_module_get_ctx(ac->module));
                }
        }
 
@@ -406,7 +404,7 @@ static int partition_replicate(struct ldb_module *module, struct ldb_request *re
                                
                                ac = partition_init_ctx(module, req);
                                if (!ac) {
-                                       return LDB_ERR_OPERATIONS_ERROR;
+                                       return ldb_operr(ldb_module_get_ctx(module));
                                }
                                
                                return partition_send_all(module, ac, req);
@@ -432,7 +430,7 @@ static int partition_replicate(struct ldb_module *module, struct ldb_request *re
 
        ac = partition_init_ctx(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        /* we need to add a control but we never touch the original request */
@@ -490,8 +488,7 @@ static int partition_search(struct ldb_module *module, struct ldb_request *req)
        /* Remove the "domain_scope" control, so we don't confuse a backend
         * server */
        if (domain_scope_control && !save_controls(domain_scope_control, req, &saved_controls)) {
-               ldb_oom(ldb_module_get_ctx(module));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        /* Locate the options */
@@ -514,7 +511,7 @@ static int partition_search(struct ldb_module *module, struct ldb_request *req)
 
        ac = partition_init_ctx(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        ldb = ldb_module_get_ctx(ac->module);
@@ -590,16 +587,14 @@ static int partition_search(struct ldb_module *module, struct ldb_request *req)
                                                            req->op.search.scope == LDB_SCOPE_ONELEVEL ? "??base" : "");
 
                                if (ref == NULL) {
-                                       ldb_oom(ldb);
-                                       return LDB_ERR_OPERATIONS_ERROR;
+                                       return ldb_oom(ldb);
                                }
 
                                /* Initialise the referrals list */
                                if (ac->referrals == NULL) {
                                        ac->referrals = (const char **) str_list_make_empty(ac);
                                        if (ac->referrals == NULL) {
-                                               ldb_oom(ldb);
-                                               return LDB_ERR_OPERATIONS_ERROR;
+                                               return ldb_oom(ldb);
                                        }
                                }
 
@@ -623,8 +618,7 @@ static int partition_search(struct ldb_module *module, struct ldb_request *req)
                                talloc_free(ref);
 
                                if (ac->referrals == NULL) {
-                                       ldb_oom(ldb);
-                                       return LDB_ERR_OPERATIONS_ERROR;
+                                       return ldb_oom(ldb);
                                }
                        }
                        if (ldb_dn_compare_base(data->partitions[i]->ctrl->dn, req->op.search.base) == 0) {
@@ -682,7 +676,7 @@ static int partition_rename(struct ldb_module *module, struct ldb_request *req)
 
        /* Skip the lot if 'data' isn't here yet (initialisation) */
        if (!data) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        backend = find_partition(data, req->op.rename.olddn, req);
@@ -844,7 +838,7 @@ static int partition_del_trans(struct ldb_module *module)
 
        if (data->in_transaction == 0) {
                DEBUG(0,("partition del transaction mismatch\n"));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
        data->in_transaction--;
 
@@ -868,12 +862,12 @@ int partition_primary_sequence_number(struct ldb_module *module, TALLOC_CTX *mem
        struct ldb_seqnum_result *seqr;
        res = talloc_zero(mem_ctx, struct ldb_result);
        if (res == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
        tseq = talloc_zero(res, struct ldb_seqnum_request);
        if (tseq == NULL) {
                talloc_free(res);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
        tseq->type = type;
        
@@ -957,12 +951,12 @@ static int partition_sequence_number(struct ldb_module *module, struct ldb_reque
 
                        res = talloc_zero(req, struct ldb_result);
                        if (res == NULL) {
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb_module_get_ctx(module));
                        }
                        tseq = talloc_zero(res, struct ldb_seqnum_request);
                        if (tseq == NULL) {
                                talloc_free(res);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb_module_get_ctx(module));
                        }
                        tseq->type = seq->type;
 
@@ -1013,13 +1007,13 @@ static int partition_sequence_number(struct ldb_module *module, struct ldb_reque
 
                res = talloc_zero(req, struct ldb_result);
                if (res == NULL) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb_module_get_ctx(module));
                }
 
                tseq = talloc_zero(res, struct ldb_seqnum_request);
                if (tseq == NULL) {
                        talloc_free(res);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb_module_get_ctx(module));
                }
                tseq->type = LDB_SEQ_HIGHEST_TIMESTAMP;
 
@@ -1057,13 +1051,13 @@ static int partition_sequence_number(struct ldb_module *module, struct ldb_reque
 
                        res = talloc_zero(req, struct ldb_result);
                        if (res == NULL) {
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb_module_get_ctx(module));
                        }
 
                        tseq = talloc_zero(res, struct ldb_seqnum_request);
                        if (tseq == NULL) {
                                talloc_free(res);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb_module_get_ctx(module));
                        }
                        tseq->type = LDB_SEQ_HIGHEST_TIMESTAMP;
 
@@ -1112,12 +1106,12 @@ static int partition_sequence_number(struct ldb_module *module, struct ldb_reque
 
        ext = talloc_zero(req, struct ldb_extended);
        if (!ext) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
        seqr = talloc_zero(ext, struct ldb_seqnum_result);
        if (seqr == NULL) {
                talloc_free(ext);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
        ext->oid = LDB_EXTENDED_SEQUENCE_NUMBER;
        ext->data = seqr;
@@ -1185,7 +1179,7 @@ static int partition_extended(struct ldb_module *module, struct ldb_request *req
 
        ac = partition_init_ctx(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        return partition_send_all(module, ac, req);
index b3b52e3cb1f4463841ce5ee923a6956931e39dc5..99d2f1de471f0409cf7afab06081292385a00fa5 100644 (file)
@@ -55,7 +55,7 @@ static int partition_load_replicate_dns(struct ldb_context *ldb, struct partitio
                int i;
                data->replicate = talloc_array(data, struct ldb_dn *, replicate_attributes->num_values + 1);
                if (!data->replicate) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                for (i=0; i < replicate_attributes->num_values; i++) {
@@ -86,8 +86,7 @@ static int partition_load_modules(struct ldb_context *ldb,
        
        data->modules = talloc_array(data, struct partition_module *, modules_attributes->num_values + 1);
        if (!data->modules) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        
        for (i=0; i < modules_attributes->num_values; i++) {
@@ -95,8 +94,7 @@ static int partition_load_modules(struct ldb_context *ldb,
                DATA_BLOB dn_blob;
                data->modules[i] = talloc(data->modules, struct partition_module);
                if (!data->modules[i]) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                dn_blob = modules_attributes->values[i];
@@ -120,7 +118,7 @@ static int partition_load_modules(struct ldb_context *ldb,
                } else {
                        data->modules[i]->dn = ldb_dn_from_ldb_val(data->modules[i], ldb, &dn_blob);
                        if (!data->modules[i]->dn || !ldb_dn_validate(data->modules[i]->dn)) {
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_operr(ldb);
                        }
                }
        }
@@ -205,14 +203,13 @@ static int new_partition_from_dn(struct ldb_context *ldb, struct partition_priva
 
        (*partition) = talloc(mem_ctx, struct dsdb_partition);
        if (!*partition) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        (*partition)->ctrl = ctrl = talloc((*partition), struct dsdb_control_current_partition);
        if (!ctrl) {
                talloc_free(*partition);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /* See if an LDAP backend has been specified */
@@ -227,7 +224,7 @@ static int new_partition_from_dn(struct ldb_context *ldb, struct partition_priva
                        ldb_asprintf_errstring(ldb, 
                                               "partition_init: unable to determine an relative path for partition: %s", filename);
                        talloc_free(*partition);
-                       return LDB_ERR_OPERATIONS_ERROR;                
+                       return LDB_ERR_OPERATIONS_ERROR;
                }
                (*partition)->backend_url = talloc_steal((*partition), backend_url);
 
@@ -285,9 +282,8 @@ static int new_partition_from_dn(struct ldb_context *ldb, struct partition_priva
        /* This weirdness allows us to use ldb_next_request() in partition.c */
        (*partition)->module = ldb_module_new(*partition, ldb, "partition_next", NULL);
        if (!(*partition)->module) {
-               ldb_oom(ldb);
                talloc_free(*partition);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        (*partition)->module->next = talloc_steal((*partition)->module, module_chain);
 
@@ -313,8 +309,7 @@ static int partition_register(struct ldb_context *ldb, struct dsdb_control_curre
 
        req = talloc_zero(NULL, struct ldb_request);
        if (req == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
                
        req->operation = LDB_REQ_REGISTER_PARTITION;
@@ -326,7 +321,7 @@ static int partition_register(struct ldb_context *ldb, struct dsdb_control_curre
        req->handle = ldb_handle_new(req, ldb);
        if (req->handle == NULL) {
                talloc_free(req);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        
        ret = ldb_request(ldb, req);
@@ -356,8 +351,7 @@ static int add_partition_to_data(struct ldb_context *ldb, struct partition_priva
        /* Add partition to list of partitions */
        data->partitions = talloc_realloc(data, data->partitions, struct dsdb_partition *, i + 2);
        if (!data->partitions) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        data->partitions[i] = talloc_steal(data->partitions, partition);
        data->partitions[i+1] = NULL;
@@ -390,8 +384,7 @@ int partition_reload_if_required(struct ldb_module *module,
 
        mem_ctx = talloc_new(data);
        if (!mem_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = partition_primary_sequence_number(module, mem_ctx, LDB_SEQ_HIGHEST_SEQ, &seq);
@@ -701,8 +694,7 @@ int partition_create(struct ldb_module *module, struct ldb_request *req)
                new_partition = true;
                mod_msg = ldb_msg_new(req);
                if (!mod_msg) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                
                mod_msg->dn = ldb_dn_new(mod_msg, ldb, DSDB_PARTITION_DN);
@@ -718,7 +710,7 @@ int partition_create(struct ldb_module *module, struct ldb_request *req)
                        const char *p, *sam_name;
                        sam_name = strrchr((const char *)ldb_get_opaque(ldb, "ldb_url"), '/');
                        if (!sam_name) {
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_operr(ldb);
                        }
                        sam_name++;
 
@@ -735,8 +727,7 @@ int partition_create(struct ldb_module *module, struct ldb_request *req)
                        if (*p) {
                                escaped = rfc1738_escape_part(mod_msg, casefold_dn);
                                if (!escaped) {
-                                       ldb_oom(ldb);
-                                       return LDB_ERR_OPERATIONS_ERROR;
+                                       return ldb_oom(ldb);
                                }
                                filename = talloc_asprintf(mod_msg, "%s.d/%s.ldb", sam_name, escaped);
                                talloc_free(escaped);
@@ -745,8 +736,7 @@ int partition_create(struct ldb_module *module, struct ldb_request *req)
                        }
 
                        if (!filename) {
-                               ldb_oom(ldb);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
                }
                partition_record = talloc_asprintf(mod_msg, "%s:%s", casefold_dn, filename);
@@ -809,12 +799,12 @@ int partition_init(struct ldb_module *module)
        struct partition_private_data *data;
 
        if (!mem_ctx) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        data = talloc_zero(mem_ctx, struct partition_private_data);
        if (data == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* When used from Samba4, this message is set by the samba4
@@ -838,14 +828,14 @@ int partition_init(struct ldb_module *module)
        if (ret != LDB_SUCCESS) {
                ldb_debug(ldb, LDB_DEBUG_ERROR,
                        "partition: Unable to register control with rootdse!\n");
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = ldb_mod_register_control(module, LDB_CONTROL_SEARCH_OPTIONS_OID);
        if (ret != LDB_SUCCESS) {
                ldb_debug(ldb, LDB_DEBUG_ERROR,
                        "partition: Unable to register control with rootdse!\n");
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        return ldb_next_init(module);
index 0a34645a917fe9acfc6135e09cff02df50fd61eb..c2bd5b8bacab3af3044c76a0d4226cd219a36b06 100644 (file)
@@ -177,8 +177,7 @@ static int setup_nt_fields(struct setup_password_fields_io *io)
                                        struct samr_Password,
                                        io->ac->status->domain_data.pwdHistoryLength);
        if (!io->g.nt_history) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        for (i = 0; i < MIN(io->ac->status->domain_data.pwdHistoryLength-1,
@@ -220,8 +219,7 @@ static int setup_lm_fields(struct setup_password_fields_io *io)
                                        struct samr_Password,
                                        io->ac->status->domain_data.pwdHistoryLength);
        if (!io->g.lm_history) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        for (i = 0; i < MIN(io->ac->status->domain_data.pwdHistoryLength-1,
@@ -265,8 +263,7 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
 
                name = strlower_talloc(io->ac, io->u.sAMAccountName);
                if (!name) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                if (name[strlen(name)-1] == '$') {
@@ -276,8 +273,7 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
                saltbody = talloc_asprintf(io->ac, "%s.%s", name,
                                           io->ac->status->domain_data.dns_domain);
                if (!saltbody) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                
                krb5_ret = krb5_make_principal(io->smb_krb5_context->krb5_context,
@@ -290,8 +286,7 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
 
                user_principal_name = talloc_strdup(io->ac, io->u.user_principal_name);
                if (!user_principal_name) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                p = strchr(user_principal_name, '@');
@@ -338,8 +333,7 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
                                    salt.saltvalue.length);
        krb5_free_salt(io->smb_krb5_context->krb5_context, salt);
        if (!io->g.salt) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        salt.saltvalue.data     = discard_const(io->g.salt);
        salt.saltvalue.length   = strlen(io->g.salt);
@@ -366,8 +360,7 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
                                         key.keyvalue.length);
        krb5_free_keyblock_contents(io->smb_krb5_context->krb5_context, &key);
        if (!io->g.aes_256.data) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /*
@@ -392,8 +385,7 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
                                         key.keyvalue.length);
        krb5_free_keyblock_contents(io->smb_krb5_context->krb5_context, &key);
        if (!io->g.aes_128.data) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /*
@@ -418,8 +410,7 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
                                         key.keyvalue.length);
        krb5_free_keyblock_contents(io->smb_krb5_context->krb5_context, &key);
        if (!io->g.des_md5.data) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /*
@@ -444,8 +435,7 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
                                         key.keyvalue.length);
        krb5_free_keyblock_contents(io->smb_krb5_context->krb5_context, &key);
        if (!io->g.des_crc.data) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        return LDB_SUCCESS;
@@ -478,8 +468,7 @@ static int setup_primary_kerberos(struct setup_password_fields_io *io,
                                               struct package_PrimaryKerberosKey3,
                                               pkb3->num_keys);
        if (!pkb3->keys) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        pkb3->keys[0].keytype   = ENCTYPE_DES_CBC_MD5;
@@ -514,8 +503,7 @@ static int setup_primary_kerberos(struct setup_password_fields_io *io,
 
                blob = strhex_to_data_blob(io->ac, old_scp->data);
                if (!blob.data) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                /* TODO: use ndr_pull_struct_blob_all(), when the ndr layer handles it correct with relative pointers */
@@ -584,8 +572,7 @@ static int setup_primary_kerberos_newer(struct setup_password_fields_io *io,
                                  struct package_PrimaryKerberosKey4,
                                  pkb4->num_keys);
        if (!pkb4->keys) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        pkb4->keys[0].iteration_count   = 4096;
@@ -630,8 +617,7 @@ static int setup_primary_kerberos_newer(struct setup_password_fields_io *io,
 
                blob = strhex_to_data_blob(io->ac, old_scp->data);
                if (!blob.data) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                /* TODO: use ndr_pull_struct_blob_all(), when the ndr layer handles it correct with relative pointers */
@@ -923,13 +909,11 @@ static int setup_primary_wdigest(struct setup_password_fields_io *io,
        sAMAccountName          = data_blob_string_const(io->u.sAMAccountName);
        sAMAccountName_l        = data_blob_string_const(strlower_talloc(io->ac, io->u.sAMAccountName));
        if (!sAMAccountName_l.data) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        sAMAccountName_u        = data_blob_string_const(strupper_talloc(io->ac, io->u.sAMAccountName));
        if (!sAMAccountName_u.data) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /* if the user doesn't have a userPrincipalName, create one (with lower case realm) */
@@ -938,34 +922,29 @@ static int setup_primary_wdigest(struct setup_password_fields_io *io,
                                                      io->u.sAMAccountName,
                                                      io->ac->status->domain_data.dns_domain);
                if (!user_principal_name) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }       
        }
        userPrincipalName       = data_blob_string_const(user_principal_name);
        userPrincipalName_l     = data_blob_string_const(strlower_talloc(io->ac, user_principal_name));
        if (!userPrincipalName_l.data) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        userPrincipalName_u     = data_blob_string_const(strupper_talloc(io->ac, user_principal_name));
        if (!userPrincipalName_u.data) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        netbios_domain          = data_blob_string_const(io->ac->status->domain_data.netbios_domain);
        netbios_domain_l        = data_blob_string_const(strlower_talloc(io->ac,
                                                                         io->ac->status->domain_data.netbios_domain));
        if (!netbios_domain_l.data) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        netbios_domain_u        = data_blob_string_const(strupper_talloc(io->ac,
                                                                         io->ac->status->domain_data.netbios_domain));
        if (!netbios_domain_u.data) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        dns_domain              = data_blob_string_const(io->ac->status->domain_data.dns_domain);
@@ -981,8 +960,7 @@ static int setup_primary_wdigest(struct setup_password_fields_io *io,
        pdb->hashes     = talloc_array(io->ac, struct package_PrimaryWDigestHash,
                                       pdb->num_hashes);
        if (!pdb->hashes) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        for (i=0; i < ARRAY_SIZE(wdigest); i++) {
@@ -1158,8 +1136,7 @@ static int setup_supplemental_field(struct setup_password_fields_io *io)
                }
                pknb_hexstr = data_blob_hex_string_upper(io->ac, &pknb_blob);
                if (!pknb_hexstr) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                pkn->name       = "Primary:Kerberos-Newer-Keys";
                pkn->reserved   = 1;
@@ -1189,8 +1166,7 @@ static int setup_supplemental_field(struct setup_password_fields_io *io)
        }
        pkb_hexstr = data_blob_hex_string_upper(io->ac, &pkb_blob);
        if (!pkb_hexstr) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        pk->name        = "Primary:Kerberos";
        pk->reserved    = 1;
@@ -1219,8 +1195,7 @@ static int setup_supplemental_field(struct setup_password_fields_io *io)
        }
        pdb_hexstr = data_blob_hex_string_upper(io->ac, &pdb_blob);
        if (!pdb_hexstr) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        pd->name        = "Primary:WDigest";
        pd->reserved    = 1;
@@ -1247,8 +1222,7 @@ static int setup_supplemental_field(struct setup_password_fields_io *io)
                }
                pcb_hexstr = data_blob_hex_string_upper(io->ac, &pcb_blob);
                if (!pcb_hexstr) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                pc->name        = "Primary:CLEARTEXT";
                pc->reserved    = 1;
@@ -1272,8 +1246,7 @@ static int setup_supplemental_field(struct setup_password_fields_io *io)
        }
        pb_hexstr = data_blob_hex_string_upper(io->ac, &pb_blob);
        if (!pb_hexstr) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        pp->name        = "Packages";
        pp->reserved    = 2;
@@ -1324,8 +1297,7 @@ static int setup_given_passwords(struct setup_password_fields_io *io,
 
                cleartext_utf16_blob = talloc(io->ac, struct ldb_val);
                if (!cleartext_utf16_blob) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                if (!convert_string_talloc(io->ac,
                                                       CH_UTF8, CH_UTF16,
@@ -1348,8 +1320,7 @@ static int setup_given_passwords(struct setup_password_fields_io *io,
 
                cleartext_utf8_blob = talloc(io->ac, struct ldb_val);
                if (!cleartext_utf8_blob) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                if (!convert_string_talloc(io->ac,
                                                       CH_UTF16MUNGED, CH_UTF8,
@@ -1371,8 +1342,7 @@ static int setup_given_passwords(struct setup_password_fields_io *io,
 
                nt_hash = talloc(io->ac, struct samr_Password);
                if (!nt_hash) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                g->nt_hash = nt_hash;
 
@@ -1387,8 +1357,7 @@ static int setup_given_passwords(struct setup_password_fields_io *io,
 
                lm_hash = talloc(io->ac, struct samr_Password);
                if (!lm_hash) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                /* compute the new lm hash */
@@ -1642,7 +1611,7 @@ static int setup_io(struct ph_context *ac,
                                  ldb_get_event_context(ldb),
                                  (struct loadparm_context *)ldb_get_opaque(ldb, "loadparm"),
                                  &io->smb_krb5_context) != 0) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        io->ac                          = ac;
@@ -1736,8 +1705,7 @@ static int setup_io(struct ph_context *ac,
                 */
                quoted_utf16_2 = talloc(io->ac, struct ldb_val);
                if (quoted_utf16_2 == NULL) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                quoted_utf16_2->data = quoted_utf16->data + 2;
@@ -1793,8 +1761,7 @@ static int setup_io(struct ph_context *ac,
                 */
                old_quoted_utf16_2 = talloc(io->ac, struct ldb_val);
                if (old_quoted_utf16_2 == NULL) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                old_quoted_utf16_2->data = old_quoted_utf16->data + 2;
@@ -1925,7 +1892,7 @@ static int setup_io(struct ph_context *ac,
                }
        } else {
                /* this shouldn't happen */
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        return LDB_SUCCESS;
@@ -2241,7 +2208,7 @@ static int password_hash_add(struct ldb_module *module, struct ldb_request *req)
        ac = ph_init_context(module, req);
        if (ac == NULL) {
                DEBUG(0,(__location__ ": %s\n", ldb_errstring(ldb)));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        ph_apply_controls(ac);
 
@@ -2268,9 +2235,11 @@ static int password_hash_add_do_add(struct ph_context *ac)
                return ret;
        }
 
+       ldb = ldb_module_get_ctx(ac->module);
+
        msg = ldb_msg_copy_shallow(ac, ac->req->op.add.message);
        if (msg == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* remove attributes that we just read into 'io' */
@@ -2280,8 +2249,6 @@ static int password_hash_add_do_add(struct ph_context *ac)
        ldb_msg_remove_attr(msg, "dBCSPwd");
        ldb_msg_remove_attr(msg, "pwdLastSet");
 
-       ldb = ldb_module_get_ctx(ac->module);
-
        ret = setup_password_fields(&io);
        if (ret != LDB_SUCCESS) {
                return ret;
@@ -2307,7 +2274,7 @@ static int password_hash_add_do_add(struct ph_context *ac)
                }
        }
        if (io.g.nt_history_len > 0) {
-               ret = samdb_msg_add_hashes(ac, msg,
+               ret = samdb_msg_add_hashes(ldb, ac, msg,
                                           "ntPwdHistory",
                                           io.g.nt_history,
                                           io.g.nt_history_len);
@@ -2316,7 +2283,7 @@ static int password_hash_add_do_add(struct ph_context *ac)
                }
        }
        if (io.g.lm_history_len > 0) {
-               ret = samdb_msg_add_hashes(ac, msg,
+               ret = samdb_msg_add_hashes(ldb, ac, msg,
                                           "lmPwdHistory",
                                           io.g.lm_history,
                                           io.g.lm_history_len);
@@ -2404,15 +2371,14 @@ static int password_hash_modify(struct ldb_module *module, struct ldb_request *r
        ac = ph_init_context(module, req);
        if (!ac) {
                DEBUG(0,(__location__ ": %s\n", ldb_errstring(ldb)));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
        ph_apply_controls(ac);
 
        /* use a new message structure so that we can modify it */
        msg = ldb_msg_copy_shallow(ac, req->op.mod.message);
        if (msg == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /* - check for single-valued password attributes
@@ -2654,7 +2620,7 @@ static int password_hash_mod_do_mod(struct ph_context *ac)
        /* use a new message structure so that we can modify it */
        msg = ldb_msg_new(ac);
        if (msg == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* modify dn */
@@ -2675,7 +2641,7 @@ static int password_hash_mod_do_mod(struct ph_context *ac)
                                        discard_const_p(struct ldb_message, searched_msg),
                                        &io.o.lm_hash, &io.o.nt_hash);
        if (!NT_STATUS_IS_OK(status)) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        io.o.nt_history_len             = samdb_result_hashes(io.ac, searched_msg, "ntPwdHistory", &io.o.nt_history);
@@ -2715,7 +2681,7 @@ static int password_hash_mod_do_mod(struct ph_context *ac)
                }
        }
        if (io.g.nt_history_len > 0) {
-               ret = samdb_msg_add_hashes(ac, msg,
+               ret = samdb_msg_add_hashes(ldb, ac, msg,
                                           "ntPwdHistory",
                                           io.g.nt_history,
                                           io.g.nt_history_len);
@@ -2724,7 +2690,7 @@ static int password_hash_mod_do_mod(struct ph_context *ac)
                }
        }
        if (io.g.lm_history_len > 0) {
-               ret = samdb_msg_add_hashes(ac, msg,
+               ret = samdb_msg_add_hashes(ldb, ac, msg,
                                           "lmPwdHistory",
                                           io.g.lm_history,
                                           io.g.lm_history_len);
index 0c5afd8e9c0fa7667887204e54af7a4c59a155ae..2d45ae28aef17d1b06e7e60aa57889227ba0e166 100644 (file)
@@ -46,8 +46,7 @@ static int pdc_fsmo_init(struct ldb_module *module)
 
        mem_ctx = talloc_new(module);
        if (!mem_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        pdc_dn = ldb_get_default_basedn(ldb);
@@ -60,8 +59,7 @@ static int pdc_fsmo_init(struct ldb_module *module)
 
        pdc_fsmo = talloc_zero(mem_ctx, struct dsdb_pdc_fsmo);
        if (!pdc_fsmo) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ldb_module_set_private(module, pdc_fsmo);
 
@@ -89,8 +87,7 @@ static int pdc_fsmo_init(struct ldb_module *module)
        }
 
        if (ldb_set_opaque(ldb, "dsdb_pdc_fsmo", pdc_fsmo) != LDB_SUCCESS) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        talloc_steal(module, pdc_fsmo);
index 616563e2d0e9792124245910a693626c3d2ecc09..109afd22fe32bb73d4a0d9984c897cf9dc8c3117 100644 (file)
@@ -155,7 +155,7 @@ failed:
        talloc_free(proxy->newdn);
        talloc_free(proxy->upstream);
        proxy->upstream = NULL;
-       return LDB_ERR_OPERATIONS_ERROR;
+       return ldb_operr(ldb);
 }
 
 
@@ -319,7 +319,7 @@ static int proxy_search_bytree(struct ldb_module *module, struct ldb_request *re
        }
 
        if (load_proxy_info(module) != LDB_SUCCESS) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* see if the dn is within olddn */
@@ -329,7 +329,7 @@ static int proxy_search_bytree(struct ldb_module *module, struct ldb_request *re
 
        ac = talloc(req, struct proxy_ctx);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ac->module = module;
index 0c992e0e126e23725d35c624ca5b6f4948ffea75..a3a1aae9847bbc6276edfa779bd9a9adeb2bc6ca 100644 (file)
@@ -216,15 +216,14 @@ static int rr_search(struct ldb_module *module, struct ldb_request *req)
                                              (size_t)(p - new_attrs[i]));
 
                if (!new_attrs[i]) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
        }
 
        if (found_rr) {
                ac = rr_init_context(module, req);
                if (!ac) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
 
                ret = ldb_build_search_req_ex(&down_req, ldb, ac,
index 16cabc18cdbf026800625cbdaa1e8212f5b31d7e..3c9ebcd74560197e21680f2a4440d22a6c30c3b0 100644 (file)
@@ -53,8 +53,7 @@ static int resolve_oids_need_value(struct ldb_context *ldb,
        case DRSUAPI_ATTRIBUTE_possSuperiors:
                str = talloc_strndup(ldb, (char *)valp->data, valp->length);
                if (!str) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                vo = dsdb_class_by_governsID_oid(schema, str);
                talloc_free(str);
@@ -68,8 +67,7 @@ static int resolve_oids_need_value(struct ldb_context *ldb,
        case DRSUAPI_ATTRIBUTE_mayContain:
                str = talloc_strndup(ldb, (char *)valp->data, valp->length);
                if (!str) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                va = dsdb_attribute_by_attributeID_oid(schema, str);
                talloc_free(str);
@@ -246,8 +244,7 @@ static int resolve_oids_replace_value(struct ldb_context *ldb,
        case DRSUAPI_ATTRIBUTE_possSuperiors:
                str = talloc_strndup(schema, (char *)valp->data, valp->length);
                if (!str) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                vo = dsdb_class_by_governsID_oid(schema, str);
                talloc_free(str);
@@ -262,8 +259,7 @@ static int resolve_oids_replace_value(struct ldb_context *ldb,
        case DRSUAPI_ATTRIBUTE_mayContain:
                str = talloc_strndup(schema, (char *)valp->data, valp->length);
                if (!str) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                va = dsdb_attribute_by_attributeID_oid(schema, str);
                talloc_free(str);
@@ -509,22 +505,19 @@ static int resolve_oids_search(struct ldb_module *module, struct ldb_request *re
 
        ac = talloc(req, struct resolve_oids_context);
        if (ac == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ac->module = module;
        ac->req = req;
 
        tree = ldb_parse_tree_copy_shallow(ac, req->op.search.tree);
        if (!tree) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        schema = talloc_reference(tree, schema);
        if (!schema) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = resolve_oids_parse_tree_replace(ldb, schema,
@@ -536,8 +529,7 @@ static int resolve_oids_search(struct ldb_module *module, struct ldb_request *re
        attrs2 = str_list_copy_const(ac,
                                     discard_const_p(const char *, req->op.search.attrs));
        if (req->op.search.attrs && !attrs2) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        for (i=0; attrs2 && attrs2[i]; i++) {
@@ -604,21 +596,18 @@ static int resolve_oids_add(struct ldb_module *module, struct ldb_request *req)
 
        ac = talloc(req, struct resolve_oids_context);
        if (ac == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ac->module = module;
        ac->req = req;
 
        msg = ldb_msg_copy_shallow(ac, ac->req->op.add.message);
        if (!msg) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        if (!talloc_reference(msg, schema)) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = resolve_oids_message_replace(ldb, schema, msg);
@@ -670,8 +659,7 @@ static int resolve_oids_modify(struct ldb_module *module, struct ldb_request *re
 
        ac = talloc(req, struct resolve_oids_context);
        if (ac == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ac->module = module;
        ac->req = req;
@@ -679,13 +667,11 @@ static int resolve_oids_modify(struct ldb_module *module, struct ldb_request *re
        /* we have to copy the message as the caller might have it as a const */
        msg = ldb_msg_copy_shallow(ac, req->op.mod.message);
        if (msg == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        if (!talloc_reference(msg, schema)) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = resolve_oids_message_replace(ldb, schema, msg);
index c14a679ec35b48dacd589e9e6c71d487c8473582..55636d13a72a85a807fac634607e77e26aab3018 100644 (file)
@@ -178,9 +178,8 @@ static int ridalloc_create_rid_set_ntds(struct ldb_module *module, TALLOC_CTX *m
 
        server_dn = ldb_dn_get_parent(tmp_ctx, ntds_dn);
        if (!server_dn) {
-               ldb_module_oom(module);
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
 
        ret = dsdb_module_reference_dn(module, tmp_ctx, server_dn, "serverReference", &machine_dn);
@@ -193,15 +192,13 @@ static int ridalloc_create_rid_set_ntds(struct ldb_module *module, TALLOC_CTX *m
 
        rid_set_dn = ldb_dn_copy(tmp_ctx, machine_dn);
        if (rid_set_dn == NULL) {
-               ldb_module_oom(module);
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
 
        if (! ldb_dn_add_child_fmt(rid_set_dn, "CN=RID Set")) {
-               ldb_module_oom(module);
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
 
        /* grab a pool from the RID Manager object */
@@ -345,9 +342,8 @@ static int ridalloc_refresh_rid_set_ntds(struct ldb_module *module,
 
        server_dn = ldb_dn_get_parent(tmp_ctx, ntds_dn);
        if (!server_dn) {
-               ldb_module_oom(module);
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
 
        ret = dsdb_module_reference_dn(module, tmp_ctx, server_dn, "serverReference", &machine_dn);
@@ -587,9 +583,8 @@ int ridalloc_allocate_rid_pool_fsmo(struct ldb_module *module, struct dsdb_fsmo_
 
        server_dn = ldb_dn_get_parent(tmp_ctx, ntds_dn);
        if (!server_dn) {
-               ldb_module_oom(module);
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
 
        ret = dsdb_module_reference_dn(module, tmp_ctx, server_dn, "serverReference", &machine_dn);
index 2219f59ef1423cca69b1f06c77e9fb9f1cd1ea0b..3e5a94673f72bda2048766847569190687fcfaae 100644 (file)
@@ -89,19 +89,19 @@ static int expand_dn_in_message(struct ldb_module *module, struct ldb_message *m
        dn_string = talloc_strndup(tmp_ctx, (const char *)v->data, v->length);
        if (dn_string == NULL) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (res == NULL) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        dn = ldb_dn_new(tmp_ctx, ldb, dn_string);
        if (!ldb_dn_validate(dn)) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = ldb_build_search_req(&req2, ldb, tmp_ctx,
@@ -137,7 +137,7 @@ static int expand_dn_in_message(struct ldb_module *module, struct ldb_message *m
 
        if (!res || res->count != 1) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        dn2 = res->msgs[0]->dn;
@@ -147,7 +147,7 @@ static int expand_dn_in_message(struct ldb_module *module, struct ldb_message *m
 
        if (v->data == NULL) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        talloc_free(tmp_ctx);
@@ -404,7 +404,7 @@ static int rootdse_add_dynamic(struct ldb_module *module, struct ldb_message *ms
        return LDB_SUCCESS;
 
 failed:
-       return LDB_ERR_OPERATIONS_ERROR;
+       return ldb_operr(ldb);
 }
 
 /*
@@ -506,7 +506,7 @@ static int rootdse_search(struct ldb_module *module, struct ldb_request *req)
 
        ac = rootdse_init_context(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* in our db we store the rootDSE with a DN of @ROOTDSE */
@@ -532,12 +532,12 @@ static int rootdse_register_control(struct ldb_module *module, struct ldb_reques
 
        list = talloc_realloc(priv, priv->controls, char *, priv->num_controls + 1);
        if (!list) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        list[priv->num_controls] = talloc_strdup(list, req->op.reg_control.oid);
        if (!list[priv->num_controls]) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        priv->num_controls += 1;
@@ -553,12 +553,12 @@ static int rootdse_register_partition(struct ldb_module *module, struct ldb_requ
 
        list = talloc_realloc(priv, priv->partitions, struct ldb_dn *, priv->num_partitions + 1);
        if (!list) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        list[priv->num_partitions] = ldb_dn_copy(list, req->op.reg_partition.dn);
        if (!list[priv->num_partitions]) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        priv->num_partitions += 1;
@@ -597,8 +597,7 @@ static int rootdse_init(struct ldb_module *module)
 
        data = talloc_zero(module, struct private_data);
        if (data == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        data->num_controls = 0;
@@ -617,8 +616,7 @@ static int rootdse_init(struct ldb_module *module)
 
        mem_ctx = talloc_new(data);
        if (!mem_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /* Now that the partitions are set up, do a search for:
@@ -638,9 +636,8 @@ static int rootdse_init(struct ldb_module *module)
                if (domain_behaviour_version != -1) {
                        int *val = talloc(ldb, int);
                        if (!val) {
-                               ldb_oom(ldb);
                                talloc_free(mem_ctx);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
                        *val = domain_behaviour_version;
                        ret = ldb_set_opaque(ldb, "domainFunctionality", val);
@@ -661,9 +658,8 @@ static int rootdse_init(struct ldb_module *module)
                if (forest_behaviour_version != -1) {
                        int *val = talloc(ldb, int);
                        if (!val) {
-                               ldb_oom(ldb);
                                talloc_free(mem_ctx);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
                        *val = forest_behaviour_version;
                        ret = ldb_set_opaque(ldb, "forestFunctionality", val);
@@ -691,9 +687,8 @@ static int rootdse_init(struct ldb_module *module)
                                if (domain_controller_behaviour_version != -1) {
                                        int *val = talloc(ldb, int);
                                        if (!val) {
-                                               ldb_oom(ldb);
                                                talloc_free(mem_ctx);
-                                       return LDB_ERR_OPERATIONS_ERROR;
+                                               return ldb_oom(ldb);
                                        }
                                        *val = domain_controller_behaviour_version;
                                        ret = ldb_set_opaque(ldb,
@@ -954,7 +949,7 @@ static int rootdse_schemaupdatenow(struct ldb_module *module, struct ldb_request
 
        ret = ldb_extended(ldb, DSDB_EXTENDED_SCHEMA_UPDATE_NOW_OID, schema_dn, &ext_res);
        if (ret != LDB_SUCCESS) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        talloc_free(ext_res);
index b4dbd4af02891d18eaa6b4c82307fbc31957bf1b..6c21382cd3f028445a124f9edf9851b14947c581 100644 (file)
@@ -112,9 +112,8 @@ static int samba3sid_next_sid(struct ldb_module *module,
 
        (*sid) = talloc_asprintf(tmp_ctx, "%s-%d", sambaSID, rid);
        if (!*sid) {
-               ldb_module_oom(module);
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
 
        ret = dsdb_module_constrainted_update_integer(module, msg->dn,
@@ -166,8 +165,7 @@ static int samba3sid_add(struct ldb_module *module, struct ldb_request *req)
 
        new_msg = ldb_msg_copy_shallow(req, req->op.add.message);
        if (!new_msg) {
-               ldb_module_oom(module);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
 
        ret = samba3sid_next_sid(module, new_msg, &sid);
index b12d25a72075087bde601990cccc0a99e9b40088..09990b06fb1f532c177d7bd20b15f434510407fe 100644 (file)
@@ -49,15 +49,13 @@ static int read_at_rootdse_record(struct ldb_context *ldb, struct ldb_module *mo
        struct ldb_dn *rootdse_dn;
        TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
        if (!tmp_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        rootdse_dn = ldb_dn_new(tmp_ctx, ldb, "@ROOTDSE");
        if (!rootdse_dn) {
                talloc_free(tmp_ctx);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = dsdb_module_search_dn(module, tmp_ctx, &rootdse_res, rootdse_dn, rootdse_attrs, 0);
@@ -87,8 +85,7 @@ static int prepare_modules_line(struct ldb_context *ldb,
        char *full_string;
        TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
        if (!tmp_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        if (backend_attr) {
@@ -112,22 +109,19 @@ static int prepare_modules_line(struct ldb_context *ldb,
        }
        if (!backend_full_list) {
                talloc_free(tmp_ctx);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        backend_full_list = str_list_append_const(backend_full_list, backend_mod_list);
        if (!backend_full_list) {
                talloc_free(tmp_ctx);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        mod_list_string = str_list_join(tmp_ctx, backend_full_list, ',');
        if (!mod_list_string) {
                talloc_free(tmp_ctx);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        full_string = talloc_asprintf(tmp_ctx, "%s:%s", backend_dn, mod_list_string);
@@ -222,15 +216,13 @@ static int samba_dsdb_init(struct ldb_module *module)
        const char *backendType, *serverRole;
 
        if (!tmp_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        samba_dsdb_dn = ldb_dn_new(tmp_ctx, ldb, "@SAMBA_DSDB");
        if (!samba_dsdb_dn) {
                talloc_free(tmp_ctx);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
 #define CHECK_LDB_RET(check_ret)                               \
@@ -273,8 +265,7 @@ static int samba_dsdb_init(struct ldb_module *module)
        do {                                                    \
                if (!final_module_list) {                       \
                        talloc_free(tmp_ctx);                   \
-                       ldb_oom(ldb);                           \
-                       return LDB_ERR_OPERATIONS_ERROR;        \
+                       return ldb_oom(ldb);                    \
                }                                               \
        } while (0)
 
@@ -332,8 +323,7 @@ static int samba_dsdb_init(struct ldb_module *module)
        reverse_module_list = talloc_array(tmp_ctx, const char *, len+1);
        if (!reverse_module_list) {
                talloc_free(tmp_ctx);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        for (i=0; i < len; i++) {
                reverse_module_list[i] = final_module_list[(len - 1) - i];
index dbf4d11f76fb040777e487c2a6f4357a0eabb07c..d64220fb243ad500617eda7a2fed066970db4290 100644 (file)
@@ -59,8 +59,7 @@ static int samba_secrets_init(struct ldb_module *module)
                                             NULL };
 
        if (!tmp_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /* Now prepare the module chain.  Oddly, we must give it to ldb_load_modules_list in REVERSE */
@@ -69,8 +68,7 @@ static int samba_secrets_init(struct ldb_module *module)
        reverse_module_list = talloc_array(tmp_ctx, const char *, len+1);
        if (!reverse_module_list) {
                talloc_free(tmp_ctx);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        for (i=0; i < len; i++) {
                reverse_module_list[i] = modules_list[(len - 1) - i];
index 70a6fd22c1e712a6217ffb5e494dc8406b6c0096..b9a97200189ed1b295e91fb14705bfe1de946311 100644 (file)
@@ -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) {
index a6487441c1cddd6251279299207cbeeb4f59fea5..ec7e7b74b6dedb17ab30d50053ba2d05838ce70a 100644 (file)
@@ -115,8 +115,7 @@ static int schema_data_init(struct ldb_module *module)
 
        data = talloc(module, struct schema_data_private_data);
        if (data == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        data->schema_dn = schema_dn;
@@ -186,8 +185,7 @@ static int schema_data_add(struct ldb_module *module, struct ldb_request *req)
        }
 
        if (!oid) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        status = dsdb_schema_pfm_find_oid(schema->prefixmap, oid, NULL);
@@ -252,8 +250,7 @@ static int generate_dITContentRules(struct ldb_context *ldb, struct ldb_message
                if (sclass->auxiliaryClass || sclass->systemAuxiliaryClass) {
                        char *ditcontentrule = schema_class_to_dITContentRule(msg, sclass, schema);
                        if (!ditcontentrule) {
-                               ldb_oom(ldb);
-                               return LDB_ERR_OPERATIONS_ERROR;
+                               return ldb_oom(ldb);
                        }
                        ret = ldb_msg_add_steal_string(msg, "dITContentRules", ditcontentrule);
                        if (ret != LDB_SUCCESS) {
@@ -274,8 +271,7 @@ static int generate_extendedAttributeInfo(struct ldb_context *ldb,
        for (attribute = schema->attributes; attribute; attribute = attribute->next) {
                char *val = schema_attribute_to_extendedInfo(msg, attribute);
                if (!val) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                ret = ldb_msg_add_string(msg, "extendedAttributeInfo", val);
@@ -297,8 +293,7 @@ static int generate_extendedClassInfo(struct ldb_context *ldb,
        for (sclass = schema->classes; sclass; sclass = sclass->next) {
                char *val = schema_class_to_extendedInfo(msg, sclass);
                if (!val) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
 
                ret = ldb_msg_add_string(msg, "extendedClassInfo", val);
@@ -454,16 +449,14 @@ static int schema_data_search(struct ldb_module *module, struct ldb_request *req
 
        search_context = talloc(req, struct schema_data_search_data);
        if (!search_context) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        search_context->module = module;
        search_context->req = req;
        search_context->schema = talloc_reference(search_context, schema);
        if (!search_context->schema) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = ldb_build_search_req_ex(&down_req, ldb, search_context,
@@ -475,7 +468,7 @@ static int schema_data_search(struct ldb_module *module, struct ldb_request *req
                                        search_context, schema_data_search_callback,
                                        req);
        if (ret != LDB_SUCCESS) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        return ldb_next_request(module, down_req);
index 30aafdb65e9df239f60af3435329003c83579de1..dc3b0604e96bca83521a325fa837e4a61553b537 100644 (file)
@@ -161,8 +161,7 @@ static int dsdb_schema_from_db(struct ldb_module *module, struct ldb_dn *schema_
 
        tmp_ctx = talloc_new(module);
        if (!tmp_ctx) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        /* we don't want to trace the schema load */
@@ -270,8 +269,7 @@ static int schema_load_init(struct ldb_module *module)
 
        private_data = talloc_zero(module, struct schema_load_private_data);
        if (private_data == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ldb_module_set_private(module, private_data);
index 93463ae95f95b5cd2da48ad322336197c11a79f9..c189115599611ae107c87bf5e7c2a0cf05516dab 100644 (file)
@@ -53,23 +53,20 @@ static int show_deleted_search(struct ldb_module *module, struct ldb_request *re
                   in-situ */
                new_tree = talloc(req, struct ldb_parse_tree);
                if (!new_tree) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                new_tree->operation = LDB_OP_AND;
                new_tree->u.list.num_elements = 2;
                new_tree->u.list.elements = talloc_array(new_tree, struct ldb_parse_tree *, 2);
                if (!new_tree->u.list.elements) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                new_tree->u.list.elements[0] = talloc(new_tree->u.list.elements, struct ldb_parse_tree);
                new_tree->u.list.elements[0]->operation = LDB_OP_NOT;
                new_tree->u.list.elements[0]->u.isnot.child =
                        talloc(new_tree->u.list.elements, struct ldb_parse_tree);
                if (!new_tree->u.list.elements[0]->u.isnot.child) {
-                       ldb_oom(ldb);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
                new_tree->u.list.elements[0]->u.isnot.child->operation = LDB_OP_EQUALITY;
                new_tree->u.list.elements[0]->u.isnot.child->u.equality.attr = "isDeleted";
@@ -109,7 +106,7 @@ static int show_deleted_init(struct ldb_module *module)
        if (ret != LDB_SUCCESS) {
                ldb_debug(ldb, LDB_DEBUG_ERROR,
                        "show_deleted: Unable to register control with rootdse!\n");
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        return ldb_next_init(module);
index 1bf72d9710738246c818e5de110f05d28e77b0d3..4ba1b76fb81123ffb64973c5e13e63f029bac295 100644 (file)
@@ -878,12 +878,12 @@ static int entryuuid_sequence_number(struct ldb_module *module, struct ldb_reque
 
        ext = talloc_zero(req, struct ldb_extended);
        if (!ext) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        seqr = talloc_zero(req, struct ldb_seqnum_result);
        if (seqr == NULL) {
                talloc_free(ext);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ext->oid = LDB_EXTENDED_SEQUENCE_NUMBER;
        ext->data = seqr;
index b677c29ddd2aa81ddd43b643791fc69b8b066706..9177744fe9efb6b5d5246975332b01b85509bb21 100644 (file)
@@ -101,7 +101,7 @@ static int subtree_delete_init(struct ldb_module *module)
        if (ret != LDB_SUCCESS) {
                ldb_debug(ldb, LDB_DEBUG_ERROR,
                        "subtree_delete: Unable to register control with rootdse!\n");
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        return ldb_next_init(module);
index ed2b024754e377c53607a6bedd9a545076ab306e..6d79db1fb0e5fcba3fb4396d39db89d6efcdb631 100644 (file)
@@ -122,7 +122,7 @@ static int subtree_rename_next_request(struct subtree_rename_context *ac)
        ldb = ldb_module_get_ctx(ac->module);
 
        if (ac->current == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ret = ldb_build_rename_req(&req, ldb, ac->current,
@@ -241,13 +241,13 @@ static int subtree_rename(struct ldb_module *module, struct ldb_request *req)
 
        ac = subren_ctx_init(module, req);
        if (!ac) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        /* add this entry as the first to do */
        ac->current = talloc_zero(ac, struct subren_msg_store);
        if (ac->current == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        ac->current->olddn = req->op.rename.olddn;
        ac->current->newdn = req->op.rename.newdn;
index 620c047cd126e9e966a6377638dbc9ff0d896353..071974f5e40af983e67c0166e52d52083ac33ef0 100644 (file)
@@ -90,8 +90,7 @@ static int add_modified(struct ldb_module *module, struct ldb_dn *dn, bool do_de
        filter = talloc_asprintf(data, "(&(dn=%s)(&(objectClass=kerberosSecret)(privateKeytab=*)))",
                                 ldb_dn_get_linearized(dn));
        if (!filter) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = ldb_search(ldb, data, &res,
@@ -112,16 +111,14 @@ static int add_modified(struct ldb_module *module, struct ldb_dn *dn, bool do_de
        item = talloc(data->changed_dns? (void *)data->changed_dns: (void *)data, struct dn_list);
        if (!item) {
                talloc_free(filter);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        item->creds = cli_credentials_init(item);
        if (!item->creds) {
                DEBUG(1, ("cli_credentials_init failed!"));
                talloc_free(filter);
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        cli_credentials_set_conf(item->creds, ldb_get_opaque(ldb, "loadparm"));
@@ -287,7 +284,7 @@ static int update_kt_add(struct ldb_module *module, struct ldb_request *req)
 
        ac = update_kt_ctx_init(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ac->dn = req->op.add.message->dn;
@@ -316,7 +313,7 @@ static int update_kt_modify(struct ldb_module *module, struct ldb_request *req)
 
        ac = update_kt_ctx_init(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ac->dn = req->op.mod.message->dn;
@@ -340,7 +337,7 @@ static int update_kt_delete(struct ldb_module *module, struct ldb_request *req)
 
        ac = update_kt_ctx_init(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        ac->dn = req->op.del.dn;
@@ -361,7 +358,7 @@ static int update_kt_rename(struct ldb_module *module, struct ldb_request *req)
 
        ac = update_kt_ctx_init(module, req);
        if (ac == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        ac->dn = req->op.rename.newdn;
@@ -425,8 +422,7 @@ static int update_kt_init(struct ldb_module *module)
 
        data = talloc(module, struct update_kt_private);
        if (data == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        data->changed_dns = NULL;
index 48e195bc21f73dbb1ed31c4c12580097a0ef702d..639b0dfae79b4c7e98fbcde51a705827085b1671 100644 (file)
@@ -48,7 +48,7 @@ int dsdb_module_search_dn(struct ldb_module *module,
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (!res) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        ret = ldb_build_search_req(&req, ldb_module_get_ctx(module), tmp_ctx,
@@ -121,7 +121,7 @@ int dsdb_module_search(struct ldb_module *module,
 
                if (!expression) {
                        talloc_free(tmp_ctx);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb_module_get_ctx(module));
                }
        } else {
                expression = NULL;
@@ -130,7 +130,7 @@ int dsdb_module_search(struct ldb_module *module,
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (!res) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        ret = ldb_build_search_req(&req, ldb_module_get_ctx(module), tmp_ctx,
@@ -237,7 +237,7 @@ int dsdb_module_guid_by_dn(struct ldb_module *module, struct ldb_dn *dn, struct
        status = dsdb_get_extended_dn_guid(res->msgs[0]->dn, guid, "GUID");
        if (!NT_STATUS_IS_OK(status)) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        talloc_free(tmp_ctx);
@@ -261,7 +261,7 @@ int dsdb_module_modify(struct ldb_module *module,
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (!res) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        ret = ldb_build_mod_req(&mod_req, ldb, tmp_ctx,
@@ -318,7 +318,7 @@ int dsdb_module_rename(struct ldb_module *module,
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (!res) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        ret = ldb_build_rename_req(&req, ldb, tmp_ctx,
@@ -374,7 +374,7 @@ int dsdb_module_add(struct ldb_module *module,
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (!res) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb_module_get_ctx(module));
        }
 
        ret = ldb_build_add_req(&req, ldb, tmp_ctx,
@@ -429,7 +429,7 @@ int dsdb_module_del(struct ldb_module *module,
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (!res) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = ldb_build_del_req(&req, ldb, tmp_ctx,
@@ -648,9 +648,8 @@ int dsdb_module_constrainted_update_integer(struct ldb_module *module, struct ld
        el->values = &v1;
        vstring = talloc_asprintf(msg, "%llu", (unsigned long long)old_val);
        if (!vstring) {
-               ldb_module_oom(module);
                talloc_free(msg);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
        v1 = data_blob_string_const(vstring);
 
@@ -663,9 +662,8 @@ int dsdb_module_constrainted_update_integer(struct ldb_module *module, struct ld
        el->values = &v2;
        vstring = talloc_asprintf(msg, "%llu", (unsigned long long)new_val);
        if (!vstring) {
-               ldb_module_oom(module);
                talloc_free(msg);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
        v2 = data_blob_string_const(vstring);
 
@@ -727,7 +725,7 @@ int dsdb_module_load_partition_usn(struct ldb_module *module, struct ldb_dn *dn,
        res = talloc_zero(tmp_ctx, struct ldb_result);
        if (!res) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
 
        ret = ldb_build_search_req(&req, ldb, tmp_ctx,
@@ -745,7 +743,7 @@ int dsdb_module_load_partition_usn(struct ldb_module *module, struct ldb_dn *dn,
        p_ctrl = talloc(req, struct dsdb_control_current_partition);
        if (p_ctrl == NULL) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
        p_ctrl->version = DSDB_CONTROL_CURRENT_PARTITION_VERSION;
        p_ctrl->dn = dn;
@@ -812,19 +810,19 @@ int dsdb_module_save_partition_usn(struct ldb_module *module, struct ldb_dn *dn,
 
        msg = ldb_msg_new(module);
        if (msg == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
 
        msg->dn = ldb_dn_new(msg, ldb, "@REPLCHANGED");
        if (msg->dn == NULL) {
                talloc_free(msg);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb_module_get_ctx(module));
        }
 
        res = talloc_zero(msg, struct ldb_result);
        if (!res) {
                talloc_free(msg);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_module_oom(module);
        }
 
        ret = ldb_msg_add_fmt(msg, "uSNHighest", "%llu", (unsigned long long)uSN);
@@ -848,7 +846,7 @@ int dsdb_module_save_partition_usn(struct ldb_module *module, struct ldb_dn *dn,
        p_ctrl = talloc(msg, struct dsdb_control_current_partition);
        if (p_ctrl == NULL) {
                talloc_free(msg);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
        p_ctrl->version = DSDB_CONTROL_CURRENT_PARTITION_VERSION;
        p_ctrl->dn = dn;
index bb22df18bb4623533f785758bda29f66d1404dc7..6ed29d78a59ffe754366901492ffe67047632506 100644 (file)
@@ -426,13 +426,12 @@ static int dsdb_schema_setup_ldb_schema_attribute(struct ldb_context *ldb,
        }
 
        if (s == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;                
+               return ldb_operr(ldb);          
        }
 
        attr->ldb_schema_attribute = a = talloc(attr, struct ldb_schema_attribute);
        if (attr->ldb_schema_attribute == NULL) {
-               ldb_oom(ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        a->name = attr->lDAPDisplayName;
@@ -731,7 +730,7 @@ int dsdb_schema_from_ldb_results(TALLOC_CTX *mem_ctx, struct ldb_context *ldb,
        schema = dsdb_new_schema(mem_ctx);
        if (!schema) {
                dsdb_oom(error_string, mem_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        schema->base_dn = talloc_steal(schema, schema_res->msgs[0]->dn);
@@ -751,7 +750,7 @@ int dsdb_schema_from_ldb_results(TALLOC_CTX *mem_ctx, struct ldb_context *ldb,
                                                        "schema_fsmo_init: dsdb_schema_info_blob_new() failed - %s",
                                                        win_errstr(status));
                        DEBUG(0,(__location__ ": %s\n", *error_string));
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
                info_val = &info_val_default;
        }
index 1dcb4f89d50b435f5c8ab37095816a1d6466e30d..5d636706212e9ef790d7f6e143cfa30397547b2a 100644 (file)
@@ -65,7 +65,7 @@ static int dsdb_schema_set_attributes(struct ldb_context *ldb, struct dsdb_schem
 
        mem_ctx = talloc_new(ldb);
        if (!mem_ctx) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        msg = ldb_msg_new(mem_ctx);
@@ -182,7 +182,7 @@ static int dsdb_schema_set_attributes(struct ldb_context *ldb, struct dsdb_schem
 
 op_error:
        talloc_free(mem_ctx);
-       return LDB_ERR_OPERATIONS_ERROR;
+       return ldb_operr(ldb);
 }
 
 static int uint32_cmp(uint32_t c1, uint32_t c2)
@@ -339,8 +339,7 @@ static int dsdb_setup_sorted_accessors(struct ldb_context *ldb,
 
 failed:
        dsdb_sorted_accessors_free(schema);
-       ldb_oom(ldb);
-       return LDB_ERR_OPERATIONS_ERROR;
+       return ldb_oom(ldb);
 }
 
 int dsdb_setup_schema_inversion(struct ldb_context *ldb, struct dsdb_schema *schema)
@@ -433,7 +432,7 @@ int dsdb_reference_schema(struct ldb_context *ldb, struct dsdb_schema *schema,
        talloc_unlink(ldb, old_schema);
 
        if (talloc_reference(ldb, schema) == NULL) {
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_oom(ldb);
        }
 
        ret = dsdb_schema_set_attributes(ldb, schema, write_attributes);
@@ -464,7 +463,7 @@ int dsdb_set_global_schema(struct ldb_context *ldb)
        if (ret == LDB_SUCCESS) {
                /* Keep a reference to this schema, just incase the original copy is replaced */
                if (talloc_reference(ldb, global_schema) == NULL) {
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_oom(ldb);
                }
        }
 
@@ -580,7 +579,7 @@ int dsdb_schema_fill_extended_dn(struct ldb_context *ldb, struct dsdb_schema *sc
                status = GUID_to_ndr_blob(&target_class->objectGUID, dn, &guid);
                if (!NT_STATUS_IS_OK(status)) {
                        talloc_free(dn);
-                       return LDB_ERR_OPERATIONS_ERROR;
+                       return ldb_operr(ldb);
                }
                ldb_dn_set_extended_component(dn, "GUID", &guid);