>From 71cceb360a178497a112b394e20b797885229a0b Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Tue, 15 Jan 2013 07:05:56 +0100 Subject: [PATCH 1/2] NSS: invalidate memcache user entry on initgr, too https://fedorahosted.org/sssd/ticket/1757 When the user entry was missing completely after initgroups, we would never invalidate the user entry from cache. This led to dangling cache entried in memory cache if the user was removed from the server while still being in memory cache. --- src/responder/nss/nsssrv_cmd.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index 55543f072bc63093fa2244ce86e6ab60638af9e0..c1d9fc1fb1f5b059a05aa87b560f74d3e32f61be 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -3414,6 +3414,7 @@ void nss_update_initgr_memcache(struct nss_ctx *nctx, TALLOC_CTX *tmp_ctx = NULL; struct sss_domain_info *dom; struct ldb_result *res; + struct sized_string delete_name; bool changed = false; uint32_t id; uint32_t gids[gnum]; @@ -3488,6 +3489,14 @@ void nss_update_initgr_memcache(struct nss_ctx *nctx, } if (changed) { + to_sized_string(&delete_name, name); + ret = sss_mmap_cache_pw_invalidate(nctx->pwd_mc_ctx, &delete_name); + if (ret != EOK && ret != ENOENT) { + DEBUG(SSSDBG_CRIT_FAILURE, + ("Internal failure in memory cache code: %d [%s]\n", + ret, strerror(ret))); + } + for (i = 0; i < gnum; i++) { id = groups[i]; -- 1.8.0.2