summaryrefslogtreecommitdiff
path: root/src/responder/nss
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 /src/responder/nss
parent04b0ea7402f3268d382143493f5f12aa0bfe1a2b (diff)
downloadsssd-270fcd0ad214d490b6b8e278cdbafda1fb7f9d8f.tar.gz
sssd-270fcd0ad214d490b6b8e278cdbafda1fb7f9d8f.tar.bz2
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/responder/nss')
-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 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;