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

Reply via email to