summaryrefslogtreecommitdiffstats
path: root/src/sss_client
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2015-11-06 09:39:05 +0100
committerJakub Hrozek <jhrozek@redhat.com>2015-11-11 18:05:34 +0100
commitc269ca2669706bddb25c5938b50277b0c0a94ea4 (patch)
tree6629cbb137d851f0969dd6718367c25663a11fd7 /src/sss_client
parentd4ff84434265dc959098ccfd4e8cd5d61d9052c9 (diff)
downloadsssd-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>
Diffstat (limited to 'src/sss_client')
-rw-r--r--src/sss_client/nss_mc_common.c12
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;
}