linux-user: don't short-circuit read with zero length
A zero-length read still needs to do the usual checks, thus it may return errors like EBADF. This makes the read syscall emulation consistent with the pread64 syscall emulation. Signed-off-by: Andreas Schwab <schwab@suse.de> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <mvm5zsxz2we.fsf@suse.de> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
14c8a3a157
commit
ba584f1de3
@ -7009,8 +7009,8 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
|
||||
_exit(arg1);
|
||||
return 0; /* avoid warning */
|
||||
case TARGET_NR_read:
|
||||
if (arg3 == 0) {
|
||||
return 0;
|
||||
if (arg2 == 0 && arg3 == 0) {
|
||||
return get_errno(safe_read(arg1, 0, 0));
|
||||
} else {
|
||||
if (!(p = lock_user(VERIFY_WRITE, arg2, arg3, 0)))
|
||||
return -TARGET_EFAULT;
|
||||
|
Loading…
Reference in New Issue
Block a user