Index: qemu/linux-user/syscall.c =================================================================== --- qemu.orig/linux-user/syscall.c 2007-11-28 16:36:53.000000000 -0700 +++ qemu/linux-user/syscall.c 2007-11-28 17:03:31.000000000 -0700 @@ -5399,7 +5399,7 @@ grouplist = alloca(gidsetsize * sizeof(gid_t)); ret = get_errno(getgroups(gidsetsize, grouplist)); - if (!is_error(ret)) { + if (!is_error(ret) && arg1) { target_grouplist = lock_user(VERIFY_WRITE, arg2, gidsetsize * 2, 0); if (!target_grouplist) goto efault; @@ -5549,7 +5549,7 @@ grouplist = alloca(gidsetsize * sizeof(gid_t)); ret = get_errno(getgroups(gidsetsize, grouplist)); - if (!is_error(ret)) { + if (!is_error(ret) && arg1) { target_grouplist = lock_user(VERIFY_WRITE, arg2, gidsetsize * 4, 0); if (!target_grouplist) { ret = -TARGET_EFAULT;