diff options
author | Alistair Francis | 2020-11-03 20:48:44 +0100 |
---|---|---|
committer | Laurent Vivier | 2020-11-04 22:27:03 +0100 |
commit | e4ce178b6153205c2e17a9b719287c83e1e67a72 (patch) | |
tree | d665cc6d7f405c165e1367b62a34525f03a4d841 /linux-user/syscall.c | |
parent | linux-user: Use "!= 0" when checking if MAP_FIXED_NOREPLACE is non-zero (diff) | |
download | qemu-e4ce178b6153205c2e17a9b719287c83e1e67a72.tar.gz qemu-e4ce178b6153205c2e17a9b719287c83e1e67a72.tar.xz qemu-e4ce178b6153205c2e17a9b719287c83e1e67a72.zip |
linux-user/syscall: Fix missing target_to_host_timespec64() check
Coverity pointed out (CID 1432339) that target_to_host_timespec64() can
fail with -TARGET_EFAULT but we never check the return value. This patch
checks the return value and handles the error.
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <cad74fae734d2562746b94acd9c34b00081c89bf.1604432881.git.alistair.francis@wdc.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'linux-user/syscall.c')
-rw-r--r-- | linux-user/syscall.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 6fef8181e7..3160a9ba06 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7592,7 +7592,9 @@ static int do_futex_time64(target_ulong uaddr, int op, int val, target_ulong tim case FUTEX_WAIT_BITSET: if (timeout) { pts = &ts; - target_to_host_timespec64(pts, timeout); + if (target_to_host_timespec64(pts, timeout)) { + return -TARGET_EFAULT; + } } else { pts = NULL; } |