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 <peter.maydell@linaro.org> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
ba4537805d
commit
4debae6fa5
@ -7876,8 +7876,11 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
|||||||
case TARGET_NR_rt_sigqueueinfo:
|
case TARGET_NR_rt_sigqueueinfo:
|
||||||
{
|
{
|
||||||
siginfo_t uinfo;
|
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;
|
goto efault;
|
||||||
|
}
|
||||||
target_to_host_siginfo(&uinfo, p);
|
target_to_host_siginfo(&uinfo, p);
|
||||||
unlock_user(p, arg1, 0);
|
unlock_user(p, arg1, 0);
|
||||||
ret = get_errno(sys_rt_sigqueueinfo(arg1, arg2, &uinfo));
|
ret = get_errno(sys_rt_sigqueueinfo(arg1, arg2, &uinfo));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user