From: Peter Maydell Date: Mon, 20 Jun 2016 14:50:36 +0000 (+0100) Subject: linux-user: Fix wrong type used for argument to rt_sigqueueinfo X-Git-Tag: v2.7.0-rc0~78^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4debae6fa57443adf3b390397a069855ee4c4e4d;p=thirdparty%2Fqemu.git linux-user: Fix wrong type used for argument to rt_sigqueueinfo The third argument to the rt_sigqueueinfo syscall is a pointer to a siginfo_t, not a pointer to a sigset_t. Fix the error in the arguments to lock_user(), which meant that we would not have detected some faults that we should. Signed-off-by: Peter Maydell Reviewed-by: Laurent Vivier Signed-off-by: Riku Voipio --- diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 5166ff9b626..8163ae803f2 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7876,8 +7876,11 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, case TARGET_NR_rt_sigqueueinfo: { siginfo_t uinfo; - if (!(p = lock_user(VERIFY_READ, arg3, sizeof(target_sigset_t), 1))) + + p = lock_user(VERIFY_READ, arg3, sizeof(target_siginfo_t), 1); + if (!p) { goto efault; + } target_to_host_siginfo(&uinfo, p); unlock_user(p, arg1, 0); ret = get_errno(sys_rt_sigqueueinfo(arg1, arg2, &uinfo));