diff options
Diffstat (limited to 'src/confdb')
-rw-r--r-- | src/confdb/confdb.c | 27 | ||||
-rw-r--r-- | src/confdb/confdb.h | 1 |
2 files changed, 22 insertions, 6 deletions
diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c index ae7abd73f..c899202ce 100644 --- a/src/confdb/confdb.c +++ b/src/confdb/confdb.c @@ -1218,12 +1218,27 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb, } } - ret = get_entry_as_bool(res->msgs[0], &domain->case_sensitive, - CONFDB_DOMAIN_CASE_SENSITIVE, true); - if(ret != EOK) { - DEBUG(SSSDBG_FATAL_FAILURE, - "Invalid value for %s\n", CONFDB_DOMAIN_CASE_SENSITIVE); - goto done; + tmp = ldb_msg_find_attr_as_string(res->msgs[0], + CONFDB_DOMAIN_CASE_SENSITIVE, "true"); + if (tmp != NULL) { + if (strcasecmp(tmp, "true") == 0) { + domain->case_sensitive = true; + domain->case_preserve = true; + } else if (strcasecmp(tmp, "false") == 0) { + domain->case_sensitive = false; + domain->case_preserve = false; + } else if (strcasecmp(tmp, "preserving") == 0) { + domain->case_sensitive = false; + domain->case_preserve = true; + } else { + DEBUG(SSSDBG_FATAL_FAILURE, + "Invalid value for %s\n", CONFDB_DOMAIN_CASE_SENSITIVE); + goto done; + } + } else { + /* default */ + domain->case_sensitive = true; + domain->case_preserve = true; } if (domain->case_sensitive == false && strcasecmp(domain->provider, "local") == 0) { diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h index 014903c4b..95d7fcdec 100644 --- a/src/confdb/confdb.h +++ b/src/confdb/confdb.h @@ -218,6 +218,7 @@ struct sss_domain_info { bool cache_credentials; bool legacy_passwords; bool case_sensitive; + bool case_preserve; gid_t override_gid; const char *override_homedir; |