summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2012-12-14 08:51:09 -0500
committerJakub Hrozek <jhrozek@redhat.com>2012-12-14 17:19:16 +0100
commit270fcd0ad214d490b6b8e278cdbafda1fb7f9d8f (patch)
tree20dbdca4f6efe35b8fb2ca6dceb8e7268b2e8a8c
parent04b0ea7402f3268d382143493f5f12aa0bfe1a2b (diff)
downloadsssd-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.c25
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;