diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2015-11-09 22:12:05 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-11-11 12:05:29 +0100 |
commit | 788146c3e3a564f333f39a2fcffccf3012cc2679 (patch) | |
tree | 0a079fa148c349d1d3ee4fd54a9539d23008743d | |
parent | 911e9879cae1f8f18e73acb3c6037af651cd9db5 (diff) | |
download | sssd-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.c | 6 |
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; } |