s4-dsdb Add ldb_reset_err_string() when we set error codes.
authorAndrew Bartlett <abartlet@samba.org>
Tue, 28 Sep 2010 02:57:15 +0000 (12:57 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 28 Sep 2010 18:23:07 +0000 (04:23 +1000)
If we don't we could show an old, incrorrect error

source4/dsdb/common/util.c
source4/dsdb/samdb/ldb_modules/util.c

index ceb12a836a1bf69f79be653137e173f23eadc9aa..a5d0f60f517c022c56034a1314d50af0e6c3667e 100644 (file)
@@ -3811,6 +3811,7 @@ int dsdb_search(struct ldb_context *ldb,
        ret = dsdb_request_add_controls(req, dsdb_flags);
        if (ret != LDB_SUCCESS) {
                talloc_free(tmp_ctx);
+               ldb_reset_err_string(ldb);
                return ret;
        }
 
@@ -3827,10 +3828,12 @@ int dsdb_search(struct ldb_context *ldb,
        if (dsdb_flags & DSDB_SEARCH_ONE_ONLY) {
                if (res->count == 0) {
                        talloc_free(tmp_ctx);
+                       ldb_reset_err_string(ldb);
                        return LDB_ERR_NO_SUCH_OBJECT;
                }
                if (res->count != 1) {
                        talloc_free(tmp_ctx);
+                       ldb_reset_err_string(ldb);
                        return LDB_ERR_CONSTRAINT_VIOLATION;
                }
        }
index 1dc466efb1f9868a86664e994b1d7b7370ee6111..b64b934aeb2b0d42ff40d5e7ad68c795588c8f0a 100644 (file)
@@ -622,6 +622,7 @@ int dsdb_module_reference_dn(struct ldb_module *module, TALLOC_CTX *mem_ctx, str
        *dn = ldb_msg_find_attr_as_dn(ldb_module_get_ctx(module),
                                      mem_ctx, res->msgs[0], attribute);
        if (!*dn) {
+               ldb_reset_err_string(ldb_module_get_ctx(module));
                talloc_free(res);
                return LDB_ERR_NO_SUCH_ATTRIBUTE;
        }