URL: https://github.com/SSSD/sssd/pull/102 Author: mzidek-rh Title: #102: Sssctl no case sensitive searches Action: opened
PR body: """ Trying to get rid of branches with smaller patches. Here is one of them. """ To pull the PR as Git branch: git remote add ghsssd https://github.com/SSSD/sssd git fetch ghsssd pull/102/head:pr102 git checkout pr102
From 20596900fca35c3039a22679f8eb4c7d1ba2be2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C5=BDidek?= <mzi...@redhat.com> Date: Thu, 1 Dec 2016 15:56:39 +0100 Subject: [PATCH 1/3] common: Fix domain case sensitivity init Fix initialization of domain case sensitivity. Resolves: https://fedorahosted.org/sssd/ticket/3235 --- src/confdb/confdb.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c index f0e3942..cfe765c 100644 --- a/src/confdb/confdb.c +++ b/src/confdb/confdb.c @@ -1292,7 +1292,7 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb, } tmp = ldb_msg_find_attr_as_string(res->msgs[0], - CONFDB_DOMAIN_CASE_SENSITIVE, "true"); + CONFDB_DOMAIN_CASE_SENSITIVE, NULL); if (tmp != NULL) { if (strcasecmp(tmp, "true") == 0) { domain->case_sensitive = true; @@ -1310,9 +1310,15 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb, } } else { /* default */ - domain->case_sensitive = true; - domain->case_preserve = true; + if (strcasecmp(domain->provider, "ad") == 0) { + domain->case_sensitive = false; + domain->case_sensitive = false; + } else { + domain->case_sensitive = true; + domain->case_preserve = true; + } } + if (domain->case_sensitive == false && strcasecmp(domain->provider, "local") == 0) { DEBUG(SSSDBG_FATAL_FAILURE, From 89d31727c8292aefb333e11899635dbeaa223993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C5=BDidek?= <mzi...@redhat.com> Date: Thu, 1 Dec 2016 14:51:37 +0100 Subject: [PATCH 2/3] sssctl: Users and groups search by alias Also search by alias when using sssctl user/group-show command. Resolves: https://fedorahosted.org/sssd/ticket/3235 --- src/tools/sssctl/sssctl_cache.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/tools/sssctl/sssctl_cache.c b/src/tools/sssctl/sssctl_cache.c index b1a7cc9..93601b9 100644 --- a/src/tools/sssctl/sssctl_cache.c +++ b/src/tools/sssctl/sssctl_cache.c @@ -295,10 +295,12 @@ static const char *sssctl_create_filter(TALLOC_CTX *mem_ctx, const char *filter; char *filter_value; bool qualify_attr = false; + bool use_alias = false; if (strcmp(attr_name, SYSDB_NAME) == 0) { if (obj_type == CACHED_USER || obj_type == CACHED_GROUP) { qualify_attr = true; + use_alias = true; } } @@ -327,8 +329,15 @@ static const char *sssctl_create_filter(TALLOC_CTX *mem_ctx, return NULL; } - filter = talloc_asprintf(mem_ctx, "(&(objectClass=%s)(%s=%s))", - class, attr_name, filter_value); + if (use_alias) { + filter = talloc_asprintf(mem_ctx, "(&(objectClass=%s)(|(%s=%s)(%s=%s)))", + class, attr_name, filter_value, + SYSDB_NAME_ALIAS, filter_value); + } else { + filter = talloc_asprintf(mem_ctx, "(&(objectClass=%s)(%s=%s))", + class, attr_name, filter_value); + } + talloc_free(filter_value); return filter; From 04e8d5a5d2d85734cb3edd7b8097a7dc2c08f3d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C5=BDidek?= <mzi...@redhat.com> Date: Thu, 1 Dec 2016 15:22:42 +0100 Subject: [PATCH 3/3] sssctl: Case insensitive filters Lowercase the filter in case insensitive domains. Resolves: https://fedorahosted.org/sssd/ticket/3235 --- src/tools/sssctl/sssctl_cache.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/tools/sssctl/sssctl_cache.c b/src/tools/sssctl/sssctl_cache.c index 93601b9..a8d703d 100644 --- a/src/tools/sssctl/sssctl_cache.c +++ b/src/tools/sssctl/sssctl_cache.c @@ -329,6 +329,14 @@ static const char *sssctl_create_filter(TALLOC_CTX *mem_ctx, return NULL; } + if (dom->case_sensitive == false) { + char *filter_value_old; + + filter_value_old = filter_value; + filter_value = sss_tc_utf8_str_tolower(mem_ctx, filter_value_old); + talloc_free(filter_value_old); + } + if (use_alias) { filter = talloc_asprintf(mem_ctx, "(&(objectClass=%s)(|(%s=%s)(%s=%s)))", class, attr_name, filter_value,
_______________________________________________ sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org