qemu-e2k/linux-user
Peter Maydell a1e221929f linux-user: Handle short lengths in host_to_target_sockaddr()
If userspace specifies a short buffer for a target sockaddr,
the kernel will only copy in as much as it has space for
(or none at all if the length is zero) -- see the kernel
move_addr_to_user() function. Mimic this in QEMU's
host_to_target_sockaddr() routine.

In particular, this fixes a segfault running the LTP
recvfrom01 test, where the guest makes a recvfrom()
call with a bad buffer pointer and other parameters which
cause the kernel to set the addrlen to zero; because we
did not skip the attempt to swap the sa_family field we
segfaulted on the bad address.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
2016-07-19 15:23:17 +03:00
..
aarch64 linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
alpha linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
arm Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
cris linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
host linux-user: Clean up hostdep.h header guards 2016-07-12 16:19:16 +02:00
i386 linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
m68k linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
microblaze linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
mips linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
mips64 linux-user: Clean up target_signal.h header guards 2016-07-12 16:19:16 +02:00
openrisc linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
ppc linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
s390x linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
sh4 linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
sparc linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
sparc64 linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
tilegx Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
unicore32 linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
x86_64 linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
Makefile.objs linux-user: Provide safe_syscall for fixing races between signals and syscalls 2016-05-27 14:49:51 +03:00
elfload.c os-posix: include sys/mman.h 2016-06-16 18:39:03 +02:00
errno_defs.h linux-user: Renumber TARGET_QEMU_ESIGRETURN, make it not arch-specific 2016-05-27 14:49:49 +03: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 Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
ioctls.h linux-user: Correct type for LOOP_GET_STATUS{,64} ioctls 2016-07-19 15:23:16 +03:00
linux_loop.h linux-user: Add loop control ioctls 2016-07-19 15:22:33 +03:00
linuxload.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
m68k-sim.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
main.c trace: Add per-vCPU tracing states for events with the 'vcpu' property 2016-07-18 18:23:12 +01:00
mmap.c os-posix: include sys/mman.h 2016-06-16 18:39:03 +02:00
qemu.h linux-user: Make semihosting heap/stack fields abi_ulongs 2016-07-04 13:06:35 +01:00
safe-syscall.S linux-user: Provide safe_syscall for fixing races between signals and syscalls 2016-05-27 14:49:51 +03:00
signal.c linux-user: Forget about synchronous signal once it is delivered 2016-07-19 15:23:16 +03:00
socket.h linux-user: support SO_PASSSEC setsockopt option 2014-06-29 14:19:59 +03:00
strace.c linux-user: fix clone() strace 2016-06-26 13:17:21 +03:00
strace.list linux-user: update get_thread_area/set_thread_area strace 2016-06-26 13:17:21 +03:00
syscall.c linux-user: Handle short lengths in host_to_target_sockaddr() 2016-07-19 15:23:17 +03:00
syscall_defs.h linux-user: Add loop control ioctls 2016-07-19 15:22:33 +03:00
syscall_types.h linux-user: Correct type for LOOP_GET_STATUS{,64} ioctls 2016-07-19 15:23:16 +03:00
target_flat.h linux-user/FLAT: allow targets to override FLAT processing 2011-02-09 10:33:54 +02:00
trace-events trace: split out trace events for linux-user/ directory 2016-06-20 17:22:17 +01:00
uaccess.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
uname.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
uname.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
vm86.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00