Module Name: src
Committed By: njoly
Date: Mon Jun 15 22:59:53 UTC 2009
Modified Files:
src/sys/compat/netbsd32: netbsd32_socket.c
Log Message:
Make netbsd32 sendmsg(2), do not use an uninitialised value for
fetching iovec structures.
While here, sync recvmsg(2) to avoid some unneeded casts.
To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/sys/compat/netbsd32/netbsd32_socket.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/compat/netbsd32/netbsd32_socket.c
diff -u src/sys/compat/netbsd32/netbsd32_socket.c:1.34 src/sys/compat/netbsd32/netbsd32_socket.c:1.35
--- src/sys/compat/netbsd32/netbsd32_socket.c:1.34 Wed Dec 17 20:51:34 2008
+++ src/sys/compat/netbsd32/netbsd32_socket.c Mon Jun 15 22:59:53 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_socket.c,v 1.34 2008/12/17 20:51:34 cegger Exp $ */
+/* $NetBSD: netbsd32_socket.c,v 1.35 2009/06/15 22:59:53 njoly Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_socket.c,v 1.34 2008/12/17 20:51:34 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_socket.c,v 1.35 2009/06/15 22:59:53 njoly Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -62,7 +62,8 @@
syscallarg(int) flags;
} */
struct netbsd32_msghdr msg;
- struct iovec aiov[UIO_SMALLIOV], *uiov, *iov;
+ struct iovec aiov[UIO_SMALLIOV], *iov;
+ struct netbsd32_iovec *iov32;
int error;
error = copyin(SCARG_P32(uap, msg), &msg, sizeof(msg));
@@ -78,9 +79,8 @@
} else
iov = aiov;
msg.msg_flags = SCARG(uap, flags);
- uiov = (struct iovec *)NETBSD32PTR64(msg.msg_iov);
- error = netbsd32_to_iovecin((struct netbsd32_iovec *)uiov,
- iov, msg.msg_iovlen);
+ iov32 = NETBSD32PTR64(msg.msg_iov);
+ error = netbsd32_to_iovecin(iov32, iov, msg.msg_iovlen);
if (error)
goto done;
if ((error = recvit32(l, SCARG(uap, s), &msg, iov, (void *)0,
@@ -224,6 +224,7 @@
struct msghdr msg;
struct netbsd32_msghdr msg32;
struct iovec aiov[UIO_SMALLIOV], *iov;
+ struct netbsd32_iovec *iov32;
int error;
error = copyin(SCARG_P32(uap, msg), &msg32, sizeof(msg32));
@@ -242,8 +243,8 @@
else
return (EMSGSIZE);
- error = netbsd32_to_iovecin((struct netbsd32_iovec *)msg.msg_iov,
- iov, msg.msg_iovlen);
+ iov32 = NETBSD32PTR64(msg32.msg_iov);
+ error = netbsd32_to_iovecin(iov32, iov, msg.msg_iovlen);
if (error)
goto done;
msg.msg_iov = iov;