From c269ca2669706bddb25c5938b50277b0c0a94ea4 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Fri, 6 Nov 2015 09:39:05 +0100 Subject: sssd_client: Do not use removed memory cache MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves: https://fedorahosted.org/sssd/ticket/2726 Reviewed-by: Michal Židek --- src/sss_client/nss_mc_common.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/sss_client/nss_mc_common.c b/src/sss_client/nss_mc_common.c index 92f802db7..6cff2e1b9 100644 --- a/src/sss_client/nss_mc_common.c +++ b/src/sss_client/nss_mc_common.c @@ -60,6 +60,8 @@ errno_t sss_nss_check_header(struct sss_cli_mc_ctx *ctx) struct sss_mc_header h; bool copy_ok; int count; + int ret; + struct stat fdstat; /* retry barrier protected reading max 5 times then give up */ for (count = 5; count > 0; count--) { @@ -99,6 +101,16 @@ errno_t sss_nss_check_header(struct sss_cli_mc_ctx *ctx) } } + ret = fstat(ctx->fd, &fdstat); + if (ret == -1) { + return EIO; + } + + if (fdstat.st_nlink == 0) { + /* memory cache was removed; we need to reinitialize it. */ + return EINVAL; + } + return 0; } -- cgit