[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 05/11] linux-user: Support setgroups syscall with no
From: |
riku . voipio |
Subject: |
[Qemu-devel] [PATCH 05/11] linux-user: Support setgroups syscall with no groups |
Date: |
Mon, 11 Mar 2013 21:27:42 +0200 |
From: Dillon Amburgey <address@hidden>
Signed-off-by: Dillon Amburgey <address@hidden>
Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Riku Voipio <address@hidden>
---
linux-user/syscall.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index c7fcfc0..1729446 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7680,18 +7680,20 @@ abi_long do_syscall(void *cpu_env, int num, abi_long
arg1,
{
int gidsetsize = arg1;
target_id *target_grouplist;
- gid_t *grouplist;
+ gid_t *grouplist = NULL;
int i;
-
- grouplist = alloca(gidsetsize * sizeof(gid_t));
- target_grouplist = lock_user(VERIFY_READ, arg2, gidsetsize * 2, 1);
- if (!target_grouplist) {
- ret = -TARGET_EFAULT;
- goto fail;
+ if (gidsetsize) {
+ grouplist = alloca(gidsetsize * sizeof(gid_t));
+ target_grouplist = lock_user(VERIFY_READ, arg2, gidsetsize *
2, 1);
+ if (!target_grouplist) {
+ ret = -TARGET_EFAULT;
+ goto fail;
+ }
+ for (i = 0; i < gidsetsize; i++) {
+ grouplist[i] = low2highgid(tswapid(target_grouplist[i]));
+ }
+ unlock_user(target_grouplist, arg2, 0);
}
- for(i = 0;i < gidsetsize; i++)
- grouplist[i] = low2highgid(tswapid(target_grouplist[i]));
- unlock_user(target_grouplist, arg2, 0);
ret = get_errno(setgroups(gidsetsize, grouplist));
}
break;
--
1.7.10.4
- [Qemu-devel] [PULL] linux-user updates, riku . voipio, 2013/03/11
- [Qemu-devel] [PATCH 05/11] linux-user: Support setgroups syscall with no groups,
riku . voipio <=
- [Qemu-devel] [PATCH 02/11] linux-user: improve print_fcntl(), riku . voipio, 2013/03/11
- [Qemu-devel] [PATCH 03/11] linux-user/syscall.c: handle FUTEX_WAIT_BITSET in do_futex, riku . voipio, 2013/03/11
- [Qemu-devel] [PATCH 04/11] linux-user: fix futex strace of FUTEX_CLOCK_REALTIME, riku . voipio, 2013/03/11
- [Qemu-devel] [PATCH 09/11] linux-user: Implement sendfile and sendfile64, riku . voipio, 2013/03/11
- [Qemu-devel] [PATCH 06/11] linux-user: Add more sparc syscall numbers, riku . voipio, 2013/03/11
- [Qemu-devel] [PATCH 10/11] linux-user: Implement accept4, riku . voipio, 2013/03/11
- [Qemu-devel] [PATCH 01/11] linux-user: Add Alpha socket constants, riku . voipio, 2013/03/11
- [Qemu-devel] [PATCH 07/11] linux-user: Fix layout of usage table to account for option text, riku . voipio, 2013/03/11
- [Qemu-devel] [PATCH 08/11] linux-user: make bogus negative iovec lengths fail EINVAL, riku . voipio, 2013/03/11
- [Qemu-devel] [PATCH 11/11] linux-user/syscall.c: Don't warn about unimplemented get_robust_list, riku . voipio, 2013/03/11