diff options
author | Lukas Slebodnik <lslebodn@redhat.com> | 2015-11-06 09:39:05 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-11-11 18:05:34 +0100 |
commit | c269ca2669706bddb25c5938b50277b0c0a94ea4 (patch) | |
tree | 6629cbb137d851f0969dd6718367c25663a11fd7 | |
parent | d4ff84434265dc959098ccfd4e8cd5d61d9052c9 (diff) | |
download | sssd-c269ca2669706bddb25c5938b50277b0c0a94ea4.tar.gz sssd-c269ca2669706bddb25c5938b50277b0c0a94ea4.tar.xz sssd-c269ca2669706bddb25c5938b50277b0c0a94ea4.zip |
sssd_client: Do not use removed memory cache
Resolves:
https://fedorahosted.org/sssd/ticket/2726
Reviewed-by: Michal Židek <mzidek@redhat.com>
-rw-r--r-- | src/sss_client/nss_mc_common.c | 12 |
1 files changed, 12 insertions, 0 deletions
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; } |