Blame SOURCES/slapi-0020-Use-extended-SSSD-API-to-signal-that-an-entry-should.patch

9eb798
From 4cd8ef26ceb3f28d103d9b8381b025d9d3f087e5 Mon Sep 17 00:00:00 2001
9eb798
From: Alexander Bokovoy <abokovoy@redhat.com>
9eb798
Date: Thu, 7 Dec 2017 12:41:15 +0200
9eb798
Subject: [PATCH] Use extended SSSD API to signal that an entry should not be
9eb798
 cached anymore
9eb798
9eb798
When ID override is changed, we remove affected entry from the schema
9eb798
compat subtrees. However, we should also signal to SSSD that ID override
9eb798
did change and thus SSSD should stop caching the entry. As result, next
9eb798
look up of the affected entry should cause a refresh of the data in
9eb798
SSSD.
9eb798
9eb798
This is important for cases when group membership changes for AD users.
9eb798
---
9eb798
 src/back-sch.c | 12 ++++++++++++
9eb798
 1 file changed, 12 insertions(+)
9eb798
9eb798
diff --git a/src/back-sch.c b/src/back-sch.c
9eb798
index 1998765..4612051 100644
9eb798
--- a/src/back-sch.c
9eb798
+++ b/src/back-sch.c
9eb798
@@ -2207,6 +2207,18 @@ backend_entry_evict_if_related(const char *group, const char *set, bool_t flag,
9eb798
 
9eb798
 		/* An entry corresponding to our target is found, evict it */
9eb798
 		map_data_unset_entry(state, group, set, id);
9eb798
+
9eb798
+		/* Signal to SSSD that this entry is not cached anymore */
9eb798
+		switch(set_data->check_nsswitch) {
9eb798
+                case SCH_NSSWITCH_USER:
9eb798
+			backend_nss_evict_user(state->nss_context, original_uid);
9eb798
+			break;
9eb798
+		case SCH_NSSWITCH_GROUP:
9eb798
+			backend_nss_evict_group(state->nss_context, original_uid);
9eb798
+			break;
9eb798
+		default:
9eb798
+			break;
9eb798
+		}
9eb798
 	}
9eb798
 
9eb798
 	slapi_ch_free_string(&id;;
9eb798
-- 
9eb798
2.14.3
9eb798