According to man page getgroups(2):
If size is zero, list is not modified, but the total number of
supplementary group IDs for the process is returned.
Signed-off-by: Kirill A. Shutemov <[email protected]>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5266
c046a42c-6fe2-441c-8c8c-
71466251a162
grouplist = alloca(gidsetsize * sizeof(gid_t));
ret = get_errno(getgroups(gidsetsize, grouplist));
+ if (gidsetsize == 0)
+ break;
if (!is_error(ret)) {
target_grouplist = lock_user(VERIFY_WRITE, arg2, gidsetsize * 2, 0);
if (!target_grouplist)
grouplist = alloca(gidsetsize * sizeof(gid_t));
ret = get_errno(getgroups(gidsetsize, grouplist));
+ if (gidsetsize == 0)
+ break;
if (!is_error(ret)) {
target_grouplist = lock_user(VERIFY_WRITE, arg2, gidsetsize * 4, 0);
if (!target_grouplist) {