From 38429c99bf5af14c2d6bae6ddcf70974fdd103cc Mon Sep 17 00:00:00 2001 From: Michal Zidek Date: Nov 13 2014 18:37:07 +0000 Subject: PROXY: Preserve service name in proxy provider Fixes: https://fedorahosted.org/sssd/ticket/2461 Reviewed-by: Pavel Reichl Reviewed-by: Jakub Hrozek --- diff --git a/src/providers/proxy/proxy_services.c b/src/providers/proxy/proxy_services.c index 16e90b0..2aa44db 100644 --- a/src/providers/proxy/proxy_services.c +++ b/src/providers/proxy/proxy_services.c @@ -38,12 +38,14 @@ proxy_save_service(struct sss_domain_info *domain, const char **protocols; const char **cased_aliases; TALLOC_CTX *tmp_ctx; + char *lc_alias = NULL; time_t now = time(NULL); tmp_ctx = talloc_new(NULL); if (!tmp_ctx) return ENOMEM; - cased_name = sss_get_cased_name(tmp_ctx, svc->s_name, !lowercase); + cased_name = sss_get_cased_name(tmp_ctx, svc->s_name, + domain->case_preserve); if (!cased_name) { ret = ENOMEM; goto done; @@ -71,6 +73,24 @@ proxy_save_service(struct sss_domain_info *domain, goto done; } + if (domain->case_preserve) { + /* Add lowercased alias to allow case-insensitive lookup */ + lc_alias = sss_tc_utf8_str_tolower(tmp_ctx, svc->s_name); + if (lc_alias == NULL) { + DEBUG(SSSDBG_OP_FAILURE, "Cannot convert name to lowercase.\n"); + ret = ENOMEM; + goto done; + } + + ret = add_string_to_list(tmp_ctx, lc_alias, + discard_const_p(char **, &cased_aliases)); + if (ret != EOK) { + DEBUG(SSSDBG_OP_FAILURE, + "Failed to add lowercased name alias.\n"); + goto done; + } + } + ret = sysdb_store_service(domain, cased_name, ntohs(svc->s_port),