summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/utils/net_idmap.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/source3/utils/net_idmap.c b/source3/utils/net_idmap.c
index ebc14e528d..6e6f205596 100644
--- a/source3/utils/net_idmap.c
+++ b/source3/utils/net_idmap.c
@@ -67,18 +67,25 @@ static int net_idmap_dump_one_entry(struct db_record *rec,
static const char* net_idmap_dbfile(struct net_context *c)
{
const char* dbfile = NULL;
+ const char *backend = NULL;
+
+ /* prefer idmap config * : backend over idmap backend parameter */
+ backend = lp_parm_const_string(-1, "idmap config *", "backend", NULL);
+ if (!backend) {
+ backend = lp_idmap_backend();
+ }
if (c->opt_db != NULL) {
dbfile = talloc_strdup(talloc_tos(), c->opt_db);
if (dbfile == NULL) {
d_fprintf(stderr, _("Out of memory!\n"));
}
- } else if (strequal(lp_idmap_backend(), "tdb")) {
+ } else if (strequal(backend, "tdb")) {
dbfile = state_path("winbindd_idmap.tdb");
if (dbfile == NULL) {
d_fprintf(stderr, _("Out of memory!\n"));
}
- } else if (strequal(lp_idmap_backend(), "tdb2")) {
+ } else if (strequal(backend, "tdb2")) {
dbfile = lp_parm_talloc_string(talloc_tos(),
-1, "tdb", "idmap2.tdb", NULL);
if (dbfile == NULL) {
@@ -89,16 +96,16 @@ static const char* net_idmap_dbfile(struct net_context *c)
d_fprintf(stderr, _("Out of memory!\n"));
}
} else {
- char* backend = talloc_strdup(talloc_tos(), lp_idmap_backend());
- char* args = strchr(backend, ':');
+ char *_backend = talloc_strdup(talloc_tos(), backend);
+ char* args = strchr(_backend, ':');
if (args != NULL) {
*args = '\0';
}
d_printf(_("Sorry, 'idmap backend = %s' is currently not supported\n"),
- backend);
+ _backend);
- talloc_free(backend);
+ talloc_free(_backend);
}
return dbfile;