diff options
author | Simo Sorce <simo@redhat.com> | 2012-12-14 08:51:09 -0500 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2012-12-14 17:19:16 +0100 |
commit | 270fcd0ad214d490b6b8e278cdbafda1fb7f9d8f (patch) | |
tree | 20dbdca4f6efe35b8fb2ca6dceb8e7268b2e8a8c /src | |
parent | 04b0ea7402f3268d382143493f5f12aa0bfe1a2b (diff) | |
download | sssd-270fcd0ad214d490b6b8e278cdbafda1fb7f9d8f.tar.gz sssd-270fcd0ad214d490b6b8e278cdbafda1fb7f9d8f.tar.xz sssd-270fcd0ad214d490b6b8e278cdbafda1fb7f9d8f.zip |
Allow mmap calls to gracefully return absent ctx
This is to allow to freely call mc functions even if initialization failed.
They will now gracefully fail instead of segfaulting.
Diffstat (limited to 'src')
-rw-r--r-- | src/responder/nss/nsssrv_mmap_cache.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/responder/nss/nsssrv_mmap_cache.c b/src/responder/nss/nsssrv_mmap_cache.c index 542c837c3..e312be19a 100644 --- a/src/responder/nss/nsssrv_mmap_cache.c +++ b/src/responder/nss/nsssrv_mmap_cache.c @@ -376,6 +376,11 @@ static errno_t sss_mmap_cache_invalidate(struct sss_mc_ctx *mcc, { struct sss_mc_rec *rec; + if (mcc == NULL) { + /* cache not initialized ? */ + return EINVAL; + } + rec = sss_mc_find_record(mcc, key); if (rec == NULL) { /* nothing to invalidate */ @@ -408,6 +413,11 @@ errno_t sss_mmap_cache_pw_store(struct sss_mc_ctx *mcc, size_t pos; int ret; + if (mcc == NULL) { + /* cache not initialized ? */ + return EINVAL; + } + ret = snprintf(uidstr, 11, "%ld", (long)uid); if (ret > 10) { return EINVAL; @@ -472,6 +482,11 @@ errno_t sss_mmap_cache_pw_invalidate_uid(struct sss_mc_ctx *mcc, uid_t uid) char *uidstr; errno_t ret; + if (mcc == NULL) { + /* cache not initialized ? */ + return EINVAL; + } + uidstr = talloc_asprintf(NULL, "%ld", (long)uid); if (!uidstr) { return ENOMEM; @@ -529,6 +544,11 @@ int sss_mmap_cache_gr_store(struct sss_mc_ctx *mcc, size_t pos; int ret; + if (mcc == NULL) { + /* cache not initialized ? */ + return EINVAL; + } + ret = snprintf(gidstr, 11, "%ld", (long)gid); if (ret > 10) { return EINVAL; @@ -589,6 +609,11 @@ errno_t sss_mmap_cache_gr_invalidate_gid(struct sss_mc_ctx *mcc, gid_t gid) char *gidstr; errno_t ret; + if (mcc == NULL) { + /* cache not initialized ? */ + return EINVAL; + } + gidstr = talloc_asprintf(NULL, "%ld", (long)gid); if (!gidstr) { return ENOMEM; |