dpward / rpms / sssd

Forked from rpms/sssd 3 years ago
Clone

Blame SOURCES/0011-responder-make-sure-SSS_DP_CERT-is-passed-to-files-p.patch

71e593
From c250beca50dbebc0cf1e90cdc1c871e9eeca922d Mon Sep 17 00:00:00 2001
71e593
From: Sumit Bose <sbose@redhat.com>
71e593
Date: Mon, 9 Jul 2018 18:45:21 +0200
71e593
Subject: [PATCH 11/19] responder: make sure SSS_DP_CERT is passed to files
71e593
 provider
71e593
71e593
Currently the files provider is only contacted once in a while to update
71e593
the full cache with fresh data from the passwd file. To allow rule based
71e593
certificate mapping the lookup by certificate request must be always
71e593
send to the file provider so that it can evaluate the rules and add the
71e593
certificate to cached entry of the matching user.
71e593
71e593
Related to https://pagure.io/SSSD/sssd/issue/3500
71e593
71e593
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
71e593
(cherry picked from commit 9fdc5f1d87a133885e6a22810a7eb980c60dcb55)
71e593
---
71e593
 src/responder/common/responder_dp.c | 20 +++++++++++++-------
71e593
 1 file changed, 13 insertions(+), 7 deletions(-)
71e593
71e593
diff --git a/src/responder/common/responder_dp.c b/src/responder/common/responder_dp.c
71e593
index 878aa1d73be0ccc56afb79303b61cd5cffe7b5e0..39f0f20c506c7ed63b271461f982ebb4f84afce7 100644
71e593
--- a/src/responder/common/responder_dp.c
71e593
+++ b/src/responder/common/responder_dp.c
71e593
@@ -34,15 +34,17 @@ sss_dp_account_files_params(struct sss_domain_info *dom,
71e593
                             enum sss_dp_acct_type *_type_out,
71e593
                             const char **_opt_name_out)
71e593
 {
71e593
-    if (sss_domain_get_state(dom) != DOM_INCONSISTENT) {
71e593
+    if (type_in != SSS_DP_CERT) {
71e593
+        if (sss_domain_get_state(dom) != DOM_INCONSISTENT) {
71e593
+            DEBUG(SSSDBG_TRACE_INTERNAL,
71e593
+                  "The entries in the files domain are up-to-date\n");
71e593
+            return EOK;
71e593
+        }
71e593
+
71e593
         DEBUG(SSSDBG_TRACE_INTERNAL,
71e593
-              "The entries in the files domain are up-to-date\n");
71e593
-        return EOK;
71e593
+              "Domain files is not consistent, issuing update\n");
71e593
     }
71e593
 
71e593
-    DEBUG(SSSDBG_TRACE_INTERNAL,
71e593
-          "Domain files is not consistent, issuing update\n");
71e593
-
71e593
     switch(type_in) {
71e593
     case SSS_DP_USER:
71e593
     case SSS_DP_GROUP:
71e593
@@ -56,12 +58,16 @@ sss_dp_account_files_params(struct sss_domain_info *dom,
71e593
         *_type_out = type_in;
71e593
         *_opt_name_out = DP_REQ_OPT_FILES_INITGR;
71e593
         return EAGAIN;
71e593
+    case SSS_DP_CERT:
71e593
+        /* Let the backend handle certificate mapping for local users */
71e593
+        *_type_out = type_in;
71e593
+        *_opt_name_out = opt_name_in;
71e593
+        return EAGAIN;
71e593
     /* These are not handled by the files provider, just fall back */
71e593
     case SSS_DP_NETGR:
71e593
     case SSS_DP_SERVICES:
71e593
     case SSS_DP_SECID:
71e593
     case SSS_DP_USER_AND_GROUP:
71e593
-    case SSS_DP_CERT:
71e593
     case SSS_DP_WILDCARD_USER:
71e593
     case SSS_DP_WILDCARD_GROUP:
71e593
         return EOK;
71e593
-- 
71e593
2.14.4
71e593