xemu/linux-user
Peter Maydell ccb08f53d5 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 be3bd286bc)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2014-07-03 16:31:30 -05:00
..
aarch64 linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
alpha linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
arm linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
cris linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
i386 linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
m68k linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
microblaze linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
mips linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
mips64 linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
openrisc linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
ppc linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
s390x linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
sh4 linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
sparc linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
sparc64 linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
unicore32 linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
x86_64 linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
Makefile.objs build: move *-user/ objects to nested Makefile.objs 2012-06-07 07:17:33 +02:00
cpu-uname.c linux-user: Don't treat AArch64 cpu names specially 2013-09-10 19:11:28 +01:00
cpu-uname.h linux-user: adapt uname machine to emulated CPU 2010-02-06 17:19:43 +01:00
elfload.c linux-user/elfload.c: Fix A64 code which was incorrectly acting like A32 2014-06-26 15:43:30 -05:00
errno_defs.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
flat.h Support for 32 bit ABI on 64 bit targets (only enabled Sparc64) 2007-10-14 16:27:31 +00:00
flatload.c flatload: fix bss clearing 2012-08-14 20:26:55 +01:00
ioctls.h linux-user: allow use of TIOCGSID 2013-09-24 10:47:07 +03:00
linux_loop.h Fix build failure with old kernel headers (loop.h is incompatible with 2008-05-23 16:06:43 +00:00
linuxload.c linux-user: add support of binfmt_misc 'O' flag 2013-09-24 10:47:07 +03:00
m68k-sim.c linux-user: Fix typo m86k -> m68k 2010-10-05 13:53:56 -05:00
main.c cpu: Drop cpu_model_str from CPU_COMMON 2013-10-07 11:48:47 +02:00
mmap.c configure: Make NPTL non-optional 2013-07-22 21:54:52 +03:00
qemu.h linux-user: create target_structs header to place ipc_perm and shmid_ds 2014-02-21 00:34:39 -06:00
signal.c linux-user: Fix trampoline code for CRIS 2014-02-21 00:34:41 -06:00
socket.h linux-user: improve target_to_host_sock_type conversion 2013-07-05 15:45:40 +03:00
strace.c linux-user: Don't omit comma for strace of rt_sigaction() 2013-04-05 14:40:54 +02:00
strace.list [v2] linux-user: implement m68k atomic syscalls 2013-09-24 10:47:07 +03:00
syscall.c linux-user: Don't overrun guest buffer in sched_getaffinity 2014-07-03 16:31:30 -05:00
syscall_defs.h linux-user: Fix stat64 syscall for SPARC64 2013-11-07 07:02:44 +01:00
syscall_types.h linux-user: Fix SNDCTL_DSP_MAP{IN, OUT}BUF ioctl definitions 2012-08-13 12:45:46 +01:00
target_flat.h linux-user/FLAT: allow targets to override FLAT processing 2011-02-09 10:33:54 +02:00
uaccess.c Fix missing strnlen problems 2009-07-01 18:24:44 +00:00
vm86.c linux-user: fix abi_(u)long, target_ulong mismatch 2011-10-27 14:42:16 +03:00