diff options
| author | maxv <maxv@NetBSD.org> | 2019-08-24 12:33:25 +0000 |
|---|---|---|
| committer | maxv <maxv@NetBSD.org> | 2019-08-24 12:33:25 +0000 |
| commit | b7fa3afd42a567bc28b2a2c71b60d606531b94b1 (patch) | |
| tree | 7046d48b24cb1472fc11b610199a1e811c967d08 /sys/compat/linux/common/linux_socket.c | |
| parent | 2c67a10838eaf14b8e11f42091acb0fc364edd06 (diff) | |
Don't read data from userland directly. This simply does not work on any
recent x86 CPU (thanks to SMAP) and all architectures that forbid direct
access to userland from the kernel. But I guess no one noticed because no
one ever uses compat_linux, right?
Diffstat (limited to 'sys/compat/linux/common/linux_socket.c')
| -rw-r--r-- | sys/compat/linux/common/linux_socket.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/compat/linux/common/linux_socket.c b/sys/compat/linux/common/linux_socket.c index 12dee086271..a3b248e375f 100644 --- a/sys/compat/linux/common/linux_socket.c +++ b/sys/compat/linux/common/linux_socket.c @@ -1,4 +1,4 @@ -/* $NetBSD: linux_socket.c,v 1.145 2019/04/18 17:45:12 christos Exp $ */ +/* $NetBSD: linux_socket.c,v 1.146 2019/08/24 12:33:25 maxv Exp $ */ /*- * Copyright (c) 1995, 1998, 2008 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_socket.c,v 1.145 2019/04/18 17:45:12 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_socket.c,v 1.146 2019/08/24 12:33:25 maxv Exp $"); #if defined(_KERNEL_OPT) #include "opt_inet.h" @@ -605,7 +605,7 @@ linux_sys_sendmsg(struct lwp *l, const struct linux_sys_sendmsg_args *uap, regis resid -= LINUX_CMSG_ALIGN(l_cmsg.cmsg_len); cidx += cspace; - } while ((l_cc = LINUX_CMSG_NXTHDR(&msg, l_cc)) && resid > 0); + } while ((l_cc = LINUX_CMSG_NXTHDR(&msg, l_cc, &l_cmsg)) && resid > 0); /* If we allocated a buffer, attach to mbuf */ if (cidx > MLEN) { |
