summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2015-11-09 22:12:05 +0100
committerJakub Hrozek <jhrozek@redhat.com>2015-11-11 12:05:29 +0100
commit788146c3e3a564f333f39a2fcffccf3012cc2679 (patch)
tree0a079fa148c349d1d3ee4fd54a9539d23008743d
parent911e9879cae1f8f18e73acb3c6037af651cd9db5 (diff)
downloadsssd-788146c3e3a564f333f39a2fcffccf3012cc2679.tar.gz
sssd-788146c3e3a564f333f39a2fcffccf3012cc2679.tar.xz
sssd-788146c3e3a564f333f39a2fcffccf3012cc2679.zip
IFP: Skip non-POSIX groups properly
When ifp_users_user_get_groups is called, for example via GetAll and the list of groups contains a non-POSIX group, we skip an array member, resulting in random memory being passed to the caller. Resolves: https://fedorahosted.org/sssd/ticket/2863 Reviewed-by: Pavel Březina <pbrezina@redhat.com>
-rw-r--r--src/responder/ifp/ifp_users.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/responder/ifp/ifp_users.c b/src/responder/ifp/ifp_users.c
index 4746de368..e542e811c 100644
--- a/src/responder/ifp/ifp_users.c
+++ b/src/responder/ifp/ifp_users.c
@@ -806,8 +806,10 @@ void ifp_users_user_get_groups(struct sbus_request *sbus_req,
continue;
}
- out[i] = ifp_groups_build_path_from_msg(out, domain, res->msgs[i]);
- if (out[i] == NULL) {
+ out[num_groups] = ifp_groups_build_path_from_msg(out,
+ domain,
+ res->msgs[i]);
+ if (out[num_groups] == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, "ifp_groups_build_path() failed\n");
return;
}