diff options
author | Michal Zidek <mzidek@redhat.com> | 2014-07-15 12:10:34 -0400 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-07-29 14:52:06 +0200 |
commit | ff22e829fd73fc53027d1e6ca005a9ac334086dd (patch) | |
tree | 515972d527cf8fafecb3ec41b5324ee8ee5a34bd /src/confdb/confdb.c | |
parent | 5328aaeea84268b6d4e26cd33a2b3e8ea89bc349 (diff) | |
download | sssd-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/confdb.c')
-rw-r--r-- | src/confdb/confdb.c | 27 |
1 files changed, 21 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) { |