From: Andreas Schwab Date: Tue, 9 Apr 2013 05:41:33 +0000 (+0000) Subject: linux-user: fix setgroups/getgroups for non-UID16 archs X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~900^2~59^2~317^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=03903ffcfb5a7c75e52da97d00eb9d0bb0660f28;p=sdk%2Femulator%2Fqemu.git linux-user: fix setgroups/getgroups for non-UID16 archs Don't assume target_id is a short. Signed-off-by: Andreas Schwab Signed-off-by: Riku Voipio --- diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 5a786f2fef..c705960d7e 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7743,12 +7743,12 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, if (gidsetsize == 0) break; if (!is_error(ret)) { - target_grouplist = lock_user(VERIFY_WRITE, arg2, gidsetsize * 2, 0); + target_grouplist = lock_user(VERIFY_WRITE, arg2, gidsetsize * sizeof(target_id), 0); if (!target_grouplist) goto efault; for(i = 0;i < ret; i++) target_grouplist[i] = tswapid(high2lowgid(grouplist[i])); - unlock_user(target_grouplist, arg2, gidsetsize * 2); + unlock_user(target_grouplist, arg2, gidsetsize * sizeof(target_id)); } } break; @@ -7760,7 +7760,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, int i; if (gidsetsize) { grouplist = alloca(gidsetsize * sizeof(gid_t)); - target_grouplist = lock_user(VERIFY_READ, arg2, gidsetsize * 2, 1); + target_grouplist = lock_user(VERIFY_READ, arg2, gidsetsize * sizeof(target_id), 1); if (!target_grouplist) { ret = -TARGET_EFAULT; goto fail;