Fix stack smashing when handling PR_GET_PDEATHSIG
The bug was triggered by the following code on aarch64-linux-user: int main(void) { int PDeathSig = 0; if (prctl(PR_GET_PDEATHSIG, &PDeathSig) == 0 && PDeathSig == SIGKILL) prctl(PR_GET_PDEATHSIG, 0); return (PDeathSig == SIGKILL); } Signed-off-by: Stephen Long <steplong@quicinc.com> Signed-off-by: Ana Pazos <apazos@quicinc.com> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20200507130302.3684-1-steplong@quicinc.com> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
4c5b97bfd0
commit
d9a5eba477
@ -10703,7 +10703,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
|
||||
int deathsig;
|
||||
ret = get_errno(prctl(arg1, &deathsig, arg3, arg4, arg5));
|
||||
if (!is_error(ret) && arg2
|
||||
&& put_user_ual(deathsig, arg2)) {
|
||||
&& put_user_s32(deathsig, arg2)) {
|
||||
return -TARGET_EFAULT;
|
||||
}
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user