Le 03/05/2021 à 19:41, LemonBoy a écrit : > From: Giuseppe Musacchio <[email protected]> > > The implicit cast from abi_long to size_t may introduce an intermediate > unwanted sign-extension of the value for 32bit targets running on 64bit > hosts. > > Signed-off-by: Giuseppe Musacchio <[email protected]> > --- > linux-user/syscall.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 95d79ddc43..c425dfa278 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -13245,8 +13245,9 @@ static abi_long do_syscall1(void *cpu_env, int num, > abi_long arg1, > } > poutoff = &outoff; > } > + /* Do not sign-extend the count parameter. */ > ret = get_errno(safe_copy_file_range(arg1, pinoff, arg3, poutoff, > - arg5, arg6)); > + (abi_ulong)arg5, arg6)); > if (!is_error(ret) && ret > 0) { > if (arg2) { > if (put_user_u64(inoff, arg2)) { >
Reviewed-by: Laurent Vivier <[email protected]>
