aboutsummaryrefslogtreecommitdiff
path: root/linux-user
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2013-02-08 07:58:41 +0000
committerRiku Voipio <riku.voipio@linaro.org>2013-03-11 14:34:05 +0200
commitdfae8e00f8ddeedcda24bd28f71d4fd2a9f988b8 (patch)
tree0b20f25353cc5cfa637fdfd7c6eb66203800a4c3 /linux-user
parent63ec54d7b319824df8b60cfe25afdfb607ce3905 (diff)
downloadqemu-dfae8e00f8ddeedcda24bd28f71d4fd2a9f988b8.zip
qemu-dfae8e00f8ddeedcda24bd28f71d4fd2a9f988b8.tar.gz
qemu-dfae8e00f8ddeedcda24bd28f71d4fd2a9f988b8.tar.bz2
linux-user: make bogus negative iovec lengths fail EINVAL
If the guest passes us a bogus negative length for an iovec, fail EINVAL rather than proceeding blindly forward. This fixes some of the error cases tests for readv and writev in the LTP. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
Diffstat (limited to 'linux-user')
-rw-r--r--linux-user/syscall.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 1729446..bab9ab5 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -1776,7 +1776,7 @@ static struct iovec *lock_iovec(int type, abi_ulong target_addr,
errno = 0;
return NULL;
}
- if (count > IOV_MAX) {
+ if (count < 0 || count > IOV_MAX) {
errno = EINVAL;
return NULL;
}