Module Name:    src
Committed By:   christos
Date:           Thu Apr 17 16:14:22 UTC 2014

Modified Files:
        src/sys/kern: uipc_domain.c
        src/sys/sys: socket.h

Log Message:
CID/1203196: Don't confuse coverity with out of bounds access


To generate a diff of this commit:
cvs rdiff -u -r1.91 -r1.92 src/sys/kern/uipc_domain.c
cvs rdiff -u -r1.108 -r1.109 src/sys/sys/socket.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/uipc_domain.c
diff -u src/sys/kern/uipc_domain.c:1.91 src/sys/kern/uipc_domain.c:1.92
--- src/sys/kern/uipc_domain.c:1.91	Wed Apr  2 11:35:45 2014
+++ src/sys/kern/uipc_domain.c	Thu Apr 17 12:14:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_domain.c,v 1.91 2014/04/02 15:35:45 seanb Exp $	*/
+/*	$NetBSD: uipc_domain.c,v 1.92 2014/04/17 16:14:22 christos Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1993
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_domain.c,v 1.91 2014/04/02 15:35:45 seanb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_domain.c,v 1.92 2014/04/17 16:14:22 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/socket.h>
@@ -418,7 +418,7 @@ sysctl_dounpcb(struct kinfo_pcb *pcb, co
 	pcb->ki_rcvq = so->so_rcv.sb_cc;
 	pcb->ki_sndq = so->so_snd.sb_cc;
 
-	un = (struct sockaddr_un *)&pcb->ki_src;
+	un = (struct sockaddr_un *)pcb->ki_spad;
 	/*
 	 * local domain sockets may bind without having a local
 	 * endpoint.  bleah!
@@ -430,17 +430,17 @@ sysctl_dounpcb(struct kinfo_pcb *pcb, co
 		 * makeun().
 		 */
 		memcpy(un, unp->unp_addr,
-		    min(sizeof(pcb->ki_s), unp->unp_addr->sun_len + 1));
+		    min(sizeof(pcb->ki_spad), unp->unp_addr->sun_len + 1));
 	}
 	else {
 		un->sun_len = offsetof(struct sockaddr_un, sun_path);
 		un->sun_family = pcb->ki_family;
 	}
 	if (unp->unp_conn != NULL) {
-		un = (struct sockaddr_un *)&pcb->ki_dst;
+		un = (struct sockaddr_un *)pcb->ki_dpad;
 		if (unp->unp_conn->unp_addr != NULL) {
 			memcpy(un, unp->unp_conn->unp_addr,
-			    min(sizeof(pcb->ki_s), unp->unp_conn->unp_addr->sun_len + 1));
+			    min(sizeof(pcb->ki_dpad), unp->unp_conn->unp_addr->sun_len + 1));
 		}
 		else {
 			un->sun_len = offsetof(struct sockaddr_un, sun_path);

Index: src/sys/sys/socket.h
diff -u src/sys/sys/socket.h:1.108 src/sys/sys/socket.h:1.109
--- src/sys/sys/socket.h:1.108	Thu Jan 31 09:30:47 2013
+++ src/sys/sys/socket.h	Thu Apr 17 12:14:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: socket.h,v 1.108 2013/01/31 14:30:47 joerg Exp $	*/
+/*	$NetBSD: socket.h,v 1.109 2014/04/17 16:14:22 christos Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -428,6 +428,8 @@ struct kinfo_pcb {
 
 #define ki_src ki_s._kis_src
 #define ki_dst ki_d._kid_dst
+#define ki_spad ki_s._kis_pad
+#define ki_dpad ki_d._kid_pad
 
 #define PCB_SLOP		20
 #define PCB_ALL			0

Reply via email to