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;

Reply via email to