If the mmap cache cannot be initialized (such as insufficient permissions or SELinux/AppArmor denial), we are supposed to fall back to our 1.8 behavior of LDB cache only. However, we weren't properly checking that the cache had been set up and we were always attempting to dereference the mmap context in fill_pwent() and fill_grent().
Fixes https://fedorahosted.org/sssd/ticket/1346
From 944ac21c0b4a12e43bfde95d7b3ce519fd9deb62 Mon Sep 17 00:00:00 2001 From: Stephen Gallagher <[email protected]> Date: Wed, 23 May 2012 08:35:26 -0400 Subject: [PATCH] NSS: Fix segfault when mmap cache cannot be initialized --- src/responder/nss/nsssrv_cmd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index aa3ef3cbc0b98d3fe44e14dce212ecf1279f14f3..1b444e68a2f09749a3f230905febc5efa15c8a82 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -365,7 +365,7 @@ static int fill_pwent(struct sss_packet *packet, num++; - if (pw_mmap_cache) { + if (pw_mmap_cache && nctx->pwd_mc_ctx) { ret = sss_mmap_cache_pw_store(nctx->pwd_mc_ctx, &fullname, &pwfield, uid, gid, @@ -1918,7 +1918,7 @@ static int fill_grent(struct sss_packet *packet, num++; - if (gr_mmap_cache) { + if (gr_mmap_cache && nctx->grp_mc_ctx) { /* body was reallocated, so fullname might be pointing to * where body used to be, not where it is */ to_sized_string(&fullname, (const char *)&body[rzero+STRS_ROFFSET]); -- 1.7.10.1
signature.asc
Description: This is a digitally signed message part
_______________________________________________ sssd-devel mailing list [email protected] https://fedorahosted.org/mailman/listinfo/sssd-devel
