Blame SOURCES/0029-sssctl-move-filter-creation-to-separate-function.patch

b2d430
From 634311d9250903599a61b2f5e205e2568ae92497 Mon Sep 17 00:00:00 2001
b2d430
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina@redhat.com>
b2d430
Date: Tue, 12 Jul 2016 12:59:48 +0200
b2d430
Subject: [PATCH 29/31] sssctl: move filter creation to separate function
b2d430
MIME-Version: 1.0
b2d430
Content-Type: text/plain; charset=UTF-8
b2d430
Content-Transfer-Encoding: 8bit
b2d430
b2d430
Reviewed-by: Fabiano FidĂȘncio <fabiano@fidencio.org>
b2d430
(cherry picked from commit 3c6e15e8aa38d9dfa02a7255fad56149bdfb35a6)
b2d430
---
b2d430
 src/tools/sssctl/sssctl_cache.c | 81 +++++++++++++++++++++++------------------
b2d430
 1 file changed, 46 insertions(+), 35 deletions(-)
b2d430
b2d430
diff --git a/src/tools/sssctl/sssctl_cache.c b/src/tools/sssctl/sssctl_cache.c
b2d430
index e23bb89db95217e66a441b7e4d6d32e668486cc8..3e7644e327eb3e5a0e33023e7a3f5f0f15e03cf6 100644
b2d430
--- a/src/tools/sssctl/sssctl_cache.c
b2d430
+++ b/src/tools/sssctl/sssctl_cache.c
b2d430
@@ -285,27 +285,16 @@ done:
b2d430
     return ret;
b2d430
 }
b2d430
 
b2d430
-static errno_t sssctl_find_object(TALLOC_CTX *mem_ctx,
b2d430
-                                  struct sss_domain_info *domains,
b2d430
-                                  struct sss_domain_info *domain,
b2d430
-                                  sssctl_basedn_fn basedn_fn,
b2d430
-                                  enum cache_object obj_type,
b2d430
-                                  const char *attr_name,
b2d430
-                                  const char *attr_value,
b2d430
-                                  const char **attrs,
b2d430
-                                  struct sysdb_attrs **_entry,
b2d430
-                                  struct sss_domain_info **_dom)
b2d430
+static const char *sssctl_create_filter(TALLOC_CTX *mem_ctx,
b2d430
+                                        struct sss_domain_info *dom,
b2d430
+                                        enum cache_object obj_type,
b2d430
+                                        const char *attr_name,
b2d430
+                                        const char *attr_value)
b2d430
 {
b2d430
-    TALLOC_CTX *tmp_ctx;
b2d430
-    struct sss_domain_info *dom;
b2d430
-    struct sysdb_attrs *entry;
b2d430
-    struct ldb_dn *base_dn;
b2d430
-    bool fqn_provided;
b2d430
-    bool qualify_attr = false;
b2d430
-    char *filter;
b2d430
-    errno_t ret;
b2d430
     const char *class;
b2d430
+    const char *filter;
b2d430
     char *filter_value;
b2d430
+    bool qualify_attr = false;
b2d430
 
b2d430
     if (strcmp(attr_name, SYSDB_NAME) == 0 &&
b2d430
             (obj_type == CACHED_USER ||
b2d430
@@ -326,9 +315,44 @@ static errno_t sssctl_find_object(TALLOC_CTX *mem_ctx,
b2d430
     default:
b2d430
         DEBUG(SSSDBG_FATAL_FAILURE,
b2d430
               "sssctl doesn't handle this object type (type=%d)\n", obj_type);
b2d430
-        return EINVAL;
b2d430
+        return NULL;
b2d430
     }
b2d430
 
b2d430
+    if (qualify_attr) {
b2d430
+        filter_value = sss_create_internal_fqname(NULL, attr_value, dom->name);
b2d430
+    } else {
b2d430
+        filter_value = talloc_strdup(NULL, attr_value);
b2d430
+    }
b2d430
+    if (filter_value == NULL) {
b2d430
+        return NULL;
b2d430
+    }
b2d430
+
b2d430
+    filter = talloc_asprintf(mem_ctx, "(&(objectClass=%s)(%s=%s))",
b2d430
+                             class, attr_name, filter_value);
b2d430
+    talloc_free(filter_value);
b2d430
+
b2d430
+    return filter;
b2d430
+}
b2d430
+
b2d430
+static errno_t sssctl_find_object(TALLOC_CTX *mem_ctx,
b2d430
+                                  struct sss_domain_info *domains,
b2d430
+                                  struct sss_domain_info *domain,
b2d430
+                                  sssctl_basedn_fn basedn_fn,
b2d430
+                                  enum cache_object obj_type,
b2d430
+                                  const char *attr_name,
b2d430
+                                  const char *attr_value,
b2d430
+                                  const char **attrs,
b2d430
+                                  struct sysdb_attrs **_entry,
b2d430
+                                  struct sss_domain_info **_dom)
b2d430
+{
b2d430
+    TALLOC_CTX *tmp_ctx;
b2d430
+    struct sss_domain_info *dom;
b2d430
+    struct sysdb_attrs *entry;
b2d430
+    struct ldb_dn *base_dn;
b2d430
+    bool fqn_provided;
b2d430
+    const char *filter;
b2d430
+    errno_t ret;
b2d430
+
b2d430
     tmp_ctx = talloc_new(NULL);
b2d430
     if (tmp_ctx == NULL) {
b2d430
         DEBUG(SSSDBG_CRIT_FAILURE, "talloc_new() failed\n");
b2d430
@@ -349,23 +373,10 @@ static errno_t sssctl_find_object(TALLOC_CTX *mem_ctx,
b2d430
             goto done;
b2d430
         }
b2d430
 
b2d430
-        if (qualify_attr) {
b2d430
-            filter_value = sss_create_internal_fqname(tmp_ctx,
b2d430
-                                                      attr_value,
b2d430
-                                                      dom->name);
b2d430
-        } else {
b2d430
-            filter_value = talloc_strdup(tmp_ctx, attr_value);
b2d430
-        }
b2d430
-        if (filter_value == NULL) {
b2d430
-            ret = ENOMEM;
b2d430
-            goto done;
b2d430
-        }
b2d430
-
b2d430
-        filter = talloc_asprintf(tmp_ctx, "(&(objectClass=%s)(%s=%s))",
b2d430
-                                 class, attr_name, filter_value);
b2d430
-        talloc_free(filter_value);
b2d430
+        filter = sssctl_create_filter(tmp_ctx, dom, obj_type,
b2d430
+                                      attr_name, attr_value);
b2d430
         if (filter == NULL) {
b2d430
-            DEBUG(SSSDBG_CRIT_FAILURE, "talloc_asprintf() failed\n");
b2d430
+            DEBUG(SSSDBG_CRIT_FAILURE, "Unable to create filter\n");
b2d430
             ret = ENOMEM;
b2d430
             goto done;
b2d430
         }
b2d430
-- 
b2d430
2.4.11
b2d430