qemu-irix/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
cpu-uname.c linux-user: Don't treat AArch64 cpu names specially 2013-09-10 19:11:28 +01:00
cpu-uname.h
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
flat.h
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
linuxload.c linux-user: add support of binfmt_misc 'O' flag 2013-09-24 10:47:07 +03:00
m68k-sim.c
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
uaccess.c
vm86.c