From: Andrew Bartlett Date: Tue, 13 Nov 2007 03:32:36 +0000 (+0100) Subject: r25934: Handle a LDB_ERR_NO_SUCH_OBJECT return value when looking for the X-Git-Tag: samba-4.0.0alpha6~801^3~1430 X-Git-Url: http://git.samba.org/?p=samba.git;a=commitdiff_plain;h=08dd389ddfe4da99ae8463c017608bc0b95f560f r25934: Handle a LDB_ERR_NO_SUCH_OBJECT return value when looking for the modules. This will be useful when we start enforcing validity in base DNs. Andrew Bartlett (This used to be commit aa8348a27a6938a1a26d4a7ed3b7405966202ad8) --- diff --git a/source4/lib/ldb/common/ldb_modules.c b/source4/lib/ldb/common/ldb_modules.c index 2ffd49786ba..845628d3ac9 100644 --- a/source4/lib/ldb/common/ldb_modules.c +++ b/source4/lib/ldb/common/ldb_modules.c @@ -323,24 +323,27 @@ int ldb_load_modules(struct ldb_context *ldb, const char *options[]) ret = ldb_search(ldb, mods_dn, LDB_SCOPE_BASE, "", attrs, &res); - if (ret != LDB_SUCCESS) { + if (ret == LDB_ERR_NO_SUCH_OBJECT) { + ldb_debug(ldb, LDB_DEBUG_TRACE, "no modules required by the db"); + } else if (ret != LDB_SUCCESS) { ldb_debug(ldb, LDB_DEBUG_FATAL, "ldb error (%s) occurred searching for modules, bailing out\n", ldb_errstring(ldb)); talloc_free(mem_ctx); return -1; - } - talloc_steal(mods_dn, res); - if (res->count == 0 || res->msgs[0]->num_elements == 0) { - ldb_debug(ldb, LDB_DEBUG_TRACE, "no modules required by the db"); } else { - if (res->count > 1) { - ldb_debug(ldb, LDB_DEBUG_FATAL, "Too many records found (%d), bailing out\n", res->count); - talloc_free(mem_ctx); - return -1; + talloc_steal(mods_dn, res); + if (res->count == 0 || res->msgs[0]->num_elements == 0) { + ldb_debug(ldb, LDB_DEBUG_TRACE, "no modules required by the db"); + } else { + if (res->count > 1) { + ldb_debug(ldb, LDB_DEBUG_FATAL, "Too many records found (%d), bailing out\n", res->count); + talloc_free(mem_ctx); + return -1; + } + + modules = ldb_modules_list_from_string(ldb, mem_ctx, + (const char *)res->msgs[0]->elements[0].values[0].data); + } - - modules = ldb_modules_list_from_string(ldb, mem_ctx, - (const char *)res->msgs[0]->elements[0].values[0].data); - } talloc_free(mods_dn);