From: Andrew Bartlett Date: Fri, 6 Sep 2013 03:39:50 +0000 (+1200) Subject: dsdb: Add DSDB_SEARCH_ONE_ONLY support to dsdb_module_search*() X-Git-Tag: samba-4.1.10^2~30 X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=4c0595f5c04855e333a59827377db3935c16db80;p=samba.git dsdb: Add DSDB_SEARCH_ONE_ONLY support to dsdb_module_search*() Signed-off-by: Andrew Bartlett Reviewed-by: Stefan Metzmacher (cherry picked from commit cccc0dee04e2e3aecd82ed4cf887f9e36dd4962d) --- diff --git a/source4/dsdb/samdb/ldb_modules/util.c b/source4/dsdb/samdb/ldb_modules/util.c index f7803e56cb1..8d587a4cb38 100644 --- a/source4/dsdb/samdb/ldb_modules/util.c +++ b/source4/dsdb/samdb/ldb_modules/util.c @@ -174,6 +174,19 @@ int dsdb_module_search_tree(struct ldb_module *module, ret = ldb_wait(req->handle, LDB_WAIT_ALL); } + if (dsdb_flags & DSDB_SEARCH_ONE_ONLY) { + if (res->count == 0) { + talloc_free(tmp_ctx); + ldb_reset_err_string(ldb_module_get_ctx(module)); + return LDB_ERR_NO_SUCH_OBJECT; + } + if (res->count != 1) { + talloc_free(tmp_ctx); + ldb_reset_err_string(ldb_module_get_ctx(module)); + return LDB_ERR_CONSTRAINT_VIOLATION; + } + } + talloc_free(req); if (ret == LDB_SUCCESS) { *_res = talloc_steal(mem_ctx, res);