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 | |
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.
-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 542c837c..e312be19 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; |