>From 740c6a794d7e039795b68a4156219341e02bcd55 Mon Sep 17 00:00:00 2001
From: Simo Sorce <simo@redhat.com>
Date: Tue, 15 Jan 2013 22:03:08 -0500
Subject: [PATCH 10/11] Parent and subdomains use the same sysdb

Remove code that tries to get the 'right' sysdb, as it is always going
to get the same answer anyway since the recent patches to rework the
domains/sysdb relationship.
---
 src/responder/pac/pacsrv_utils.c           |  6 +--
 src/responder/sudo/sudosrv_get_sudorules.c | 73 +++---------------------------
 2 files changed, 8 insertions(+), 71 deletions(-)

diff --git a/src/responder/pac/pacsrv_utils.c b/src/responder/pac/pacsrv_utils.c
index 44299db6d64c418482479e43dd9dabb0d362ffc5..ef6301264c14da4ae590214296821bd71d2639d5 100644
--- a/src/responder/pac/pacsrv_utils.c
+++ b/src/responder/pac/pacsrv_utils.c
@@ -255,11 +255,7 @@ errno_t get_my_domain_data(struct pac_ctx *pac_ctx,
     size_t c;
 
     if (pac_ctx->my_dom_sid == NULL || pac_ctx->range_map == NULL) {
-        if (dom->parent != NULL) {
-            sysdb = dom->parent->sysdb;
-        } else {
-            sysdb = dom->sysdb;
-        }
+        sysdb = dom->sysdb;
 
         if (sysdb == NULL) {
             DEBUG(SSSDBG_FATAL_FAILURE, ("Missing sysdb context.\n"));
diff --git a/src/responder/sudo/sudosrv_get_sudorules.c b/src/responder/sudo/sudosrv_get_sudorules.c
index 90481ed9c04b178cff36855765cf6d51120f6944..76eae222392e06390bf40d9754f2eadd6122b105 100644
--- a/src/responder/sudo/sudosrv_get_sudorules.c
+++ b/src/responder/sudo/sudosrv_get_sudorules.c
@@ -29,22 +29,6 @@
 #include "db/sysdb_sudo.h"
 #include "responder/sudo/sudosrv_private.h"
 
-static struct sysdb_ctx* sudosrv_get_user_sysdb(struct sss_domain_info *domain)
-{
-    return domain->sysdb;
-}
-
-static struct sysdb_ctx* sudosrv_get_rules_sysdb(struct sss_domain_info *domain)
-{
-    if (domain->parent == NULL) {
-        return domain->sysdb;
-    } else {
-        /* sudo rules are stored under parent domain basedn, so we will return
-         * parent's sysdb context */
-        return domain->parent->sysdb;
-    }
-}
-
 static errno_t sudosrv_get_user(struct sudo_dom_ctx *dctx);
 
 errno_t sudosrv_get_sudorules(struct sudo_dom_ctx *dctx)
@@ -88,7 +72,6 @@ static errno_t sudosrv_get_user(struct sudo_dom_ctx *dctx)
     struct sss_domain_info *dom = dctx->domain;
     struct sudo_cmd_ctx *cmd_ctx = dctx->cmd_ctx;
     struct cli_ctx *cli_ctx = dctx->cmd_ctx->cli_ctx;
-    struct sysdb_ctx *sysdb;
     struct ldb_result *user;
     time_t cache_expire = 0;
     struct tevent_req *dpreq;
@@ -128,15 +111,8 @@ static errno_t sudosrv_get_user(struct sudo_dom_ctx *dctx)
         DEBUG(SSSDBG_FUNC_DATA, ("Requesting info about [%s@%s]\n",
               name, dom->name));
 
-        sysdb = sudosrv_get_user_sysdb(dctx->domain);
-        if (sysdb == NULL) {
-             DEBUG(SSSDBG_CRIT_FAILURE,
-                   ("sysdb context not found for this domain!\n"));
-             ret = EIO;
-             goto done;
-        }
-
-        ret = sysdb_getpwnam(dctx, sysdb, dctx->domain, name, &user);
+        ret = sysdb_getpwnam(dctx, dctx->domain->sysdb,
+                             dctx->domain, name, &user);
         if (ret != EOK) {
             DEBUG(SSSDBG_OP_FAILURE,
                   ("Failed to make request to our cache!\n"));
@@ -344,8 +320,6 @@ errno_t sudosrv_get_rules(struct sudo_cmd_ctx *cmd_ctx)
     TALLOC_CTX *tmp_ctx = NULL;
     struct tevent_req *dpreq = NULL;
     struct dp_callback_ctx *cb_ctx = NULL;
-    struct sysdb_ctx *user_sysdb = NULL;
-    struct sysdb_ctx *rules_sysdb = NULL;
     char **groupnames = NULL;
     uint32_t expired_rules_num = 0;
     struct sysdb_attrs **expired_rules = NULL;
@@ -359,22 +333,6 @@ errno_t sudosrv_get_rules(struct sudo_cmd_ctx *cmd_ctx)
         return EFAULT;
     }
 
-    user_sysdb = sudosrv_get_user_sysdb(cmd_ctx->domain);
-    if (user_sysdb == NULL) {
-        DEBUG(SSSDBG_CRIT_FAILURE,
-              ("user sysdb context not found for this domain!\n"));
-        ret = EIO;
-        goto done;
-    }
-
-    rules_sysdb = sudosrv_get_rules_sysdb(cmd_ctx->domain);
-    if (rules_sysdb == NULL) {
-        DEBUG(SSSDBG_CRIT_FAILURE,
-              ("rules sysdb context not found for this domain!\n"));
-        ret = EIO;
-        goto done;
-    }
-
     tmp_ctx = talloc_new(NULL);
     if (tmp_ctx == NULL) {
         DEBUG(SSSDBG_CRIT_FAILURE, ("talloc_new() failed\n"));
@@ -399,7 +357,7 @@ errno_t sudosrv_get_rules(struct sudo_cmd_ctx *cmd_ctx)
      * expired rules for this user and defaults at once we will save one
      * provider call
      */
-    ret = sysdb_get_sudo_user_info(tmp_ctx, user_sysdb, cmd_ctx->domain,
+    ret = sysdb_get_sudo_user_info(tmp_ctx, cmd_ctx->domain->sysdb, cmd_ctx->domain,
                                    cmd_ctx->orig_username, NULL, &groupnames);
     if (ret != EOK) {
         DEBUG(SSSDBG_CRIT_FAILURE,
@@ -411,7 +369,7 @@ errno_t sudosrv_get_rules(struct sudo_cmd_ctx *cmd_ctx)
             | SYSDB_SUDO_FILTER_INCLUDE_DFL
             | SYSDB_SUDO_FILTER_ONLY_EXPIRED
             | SYSDB_SUDO_FILTER_USERINFO;
-    ret = sudosrv_get_sudorules_query_cache(tmp_ctx, rules_sysdb,
+    ret = sudosrv_get_sudorules_query_cache(tmp_ctx, cmd_ctx->domain->sysdb,
                                             cmd_ctx->domain, cmd_ctx->type,
                                             attrs, flags, cmd_ctx->orig_username,
                                             cmd_ctx->uid, groupnames,
@@ -569,8 +527,6 @@ static errno_t sudosrv_get_sudorules_from_cache(TALLOC_CTX *mem_ctx,
 {
     TALLOC_CTX *tmp_ctx;
     errno_t ret;
-    struct sysdb_ctx *user_sysdb = NULL;
-    struct sysdb_ctx *rules_sysdb = NULL;
     char **groupnames = NULL;
     const char *debug_name = NULL;
     unsigned int flags = SYSDB_SUDO_FILTER_NONE;
@@ -600,26 +556,11 @@ static errno_t sudosrv_get_sudorules_from_cache(TALLOC_CTX *mem_ctx,
         return ENOMEM;
     }
 
-    user_sysdb = sudosrv_get_user_sysdb(cmd_ctx->domain);
-    if (user_sysdb == NULL) {
-        DEBUG(SSSDBG_CRIT_FAILURE,
-              ("user sysdb context not found for this domain!\n"));
-        ret = EIO;
-        goto done;
-    }
-
-    rules_sysdb = sudosrv_get_rules_sysdb(cmd_ctx->domain);
-    if (rules_sysdb == NULL) {
-        DEBUG(SSSDBG_CRIT_FAILURE,
-              ("rules sysdb context not found for this domain!\n"));
-        ret = EIO;
-        goto done;
-    }
-
     switch (cmd_ctx->type) {
     case SSS_SUDO_USER:
         debug_name = cmd_ctx->cased_username;
-        ret = sysdb_get_sudo_user_info(tmp_ctx, user_sysdb, cmd_ctx->domain,
+        ret = sysdb_get_sudo_user_info(tmp_ctx, cmd_ctx->domain->sysdb,
+                                       cmd_ctx->domain,
                                        cmd_ctx->orig_username,
                                        NULL, &groupnames);
         if (ret != EOK) {
@@ -635,7 +576,7 @@ static errno_t sudosrv_get_sudorules_from_cache(TALLOC_CTX *mem_ctx,
         break;
     }
 
-    ret = sudosrv_get_sudorules_query_cache(tmp_ctx, rules_sysdb,
+    ret = sudosrv_get_sudorules_query_cache(tmp_ctx, cmd_ctx->domain->sysdb,
                                             cmd_ctx->domain, cmd_ctx->type,
                                             attrs, flags, cmd_ctx->orig_username,
                                             cmd_ctx->uid, groupnames,
-- 
1.8.1.2

