summaryrefslogtreecommitdiffstats
path: root/src/confdb
diff options
context:
space:
mode:
authorMichal Zidek <mzidek@redhat.com>2014-07-15 12:10:34 -0400
committerJakub Hrozek <jhrozek@redhat.com>2014-07-29 14:52:06 +0200
commitff22e829fd73fc53027d1e6ca005a9ac334086dd (patch)
tree515972d527cf8fafecb3ec41b5324ee8ee5a34bd /src/confdb
parent5328aaeea84268b6d4e26cd33a2b3e8ea89bc349 (diff)
downloadsssd-ff22e829fd73fc53027d1e6ca005a9ac334086dd.tar.gz
sssd-ff22e829fd73fc53027d1e6ca005a9ac334086dd.tar.xz
sssd-ff22e829fd73fc53027d1e6ca005a9ac334086dd.zip
case_sensitivity = preserving
If case_sensitivity is set to 'preserving', getXXnam returns name attribute in the same format as stored in LDAP. Fixes: https://fedorahosted.org/sssd/ticket/2367 Reviewed-by: Pavel Reichl <preichl@redhat.com>
Diffstat (limited to 'src/confdb')
-rw-r--r--src/confdb/confdb.c27
-rw-r--r--src/confdb/confdb.h1
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;