]> git.ipfire.org Git - thirdparty/qemu.git/commit
linux-user: Don't overrun guest buffer in sched_getaffinity
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 15 May 2014 13:40:23 +0000 (14:40 +0100)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Tue, 5 Aug 2014 18:30:29 +0000 (13:30 -0500)
commitf99329cd82831c64864e99293d91be3741dc7a60
treea51db62101735780da188fb4c1eab02346a9118b
parent207f61dc286fbcb322514007778b99d20e48416b
linux-user: Don't overrun guest buffer in sched_getaffinity

If the guest's "long" type is smaller than the host's, then
our sched_getaffinity wrapper needs to round the buffer size
up to a multiple of the host sizeof(long). This means that when
we copy the data back from the host buffer to the guest's
buffer there might be more than we can fit. Rather than
overflowing the guest's buffer, handle this case by returning
EINVAL or ignoring the unused extra space, as appropriate.

Note that only guests using the syscall interface directly might
run into this bug -- the glibc wrappers around it will always
use a buffer whose size is a multiple of 8 regardless of guest
architecture.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
(cherry picked from commit be3bd286bc06bb68cdc71748d9dd4edcd57b2b24)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
linux-user/syscall.c