From 3ac00c9dc348733f0bb999a91a8faa6443ac99eb Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Sun, 20 Jul 2014 11:53:32 +0200 Subject: s3:idmap: in idmap_init_domain() load methods before loading further config Check whether the requested backend exists at all, before going further into the config parsing. Signed-off-by: Michael Adam Reviewed-by: Volker Lendecke --- source3/winbindd/idmap.c | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/source3/winbindd/idmap.c b/source3/winbindd/idmap.c index 33b397ce66..c76c35022d 100644 --- a/source3/winbindd/idmap.c +++ b/source3/winbindd/idmap.c @@ -185,6 +185,29 @@ static struct idmap_domain *idmap_init_domain(TALLOC_CTX *mem_ctx, goto fail; } + /* + * Check whether the requested backend module exists and + * load the methods. + */ + + result->methods = get_methods(modulename); + if (result->methods == NULL) { + DEBUG(3, ("idmap backend %s not found\n", modulename)); + + status = smb_probe_module("idmap", modulename); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(3, ("Could not probe idmap module %s\n", + modulename)); + goto fail; + } + + result->methods = get_methods(modulename); + } + if (result->methods == NULL) { + DEBUG(1, ("idmap backend %s not found\n", modulename)); + goto fail; + } + /* * load ranges and read only information from the config */ @@ -226,24 +249,6 @@ static struct idmap_domain *idmap_init_domain(TALLOC_CTX *mem_ctx, } } - result->methods = get_methods(modulename); - if (result->methods == NULL) { - DEBUG(3, ("idmap backend %s not found\n", modulename)); - - status = smb_probe_module("idmap", modulename); - if (!NT_STATUS_IS_OK(status)) { - DEBUG(3, ("Could not probe idmap module %s\n", - modulename)); - goto fail; - } - - result->methods = get_methods(modulename); - } - if (result->methods == NULL) { - DEBUG(1, ("idmap backend %s not found\n", modulename)); - goto fail; - } - status = result->methods->init(result); if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("idmap initialization returned %s\n", -- cgit