summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/netinet/in_pcb.c3
-rw-r--r--sys/netinet/tcp_usrreq.c12
-rw-r--r--sys/netinet6/in6_pcb.c3
3 files changed, 5 insertions, 13 deletions
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c
index db67fbaa95c..ba420f7cfdb 100644
--- a/sys/netinet/in_pcb.c
+++ b/sys/netinet/in_pcb.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: in_pcb.c,v 1.149 2014/03/28 08:33:51 sthen Exp $ */
+/* $OpenBSD: in_pcb.c,v 1.150 2014/04/06 16:49:40 chrisz Exp $ */
/* $NetBSD: in_pcb.c,v 1.25 1996/02/13 23:41:53 christos Exp $ */
/*
@@ -417,6 +417,7 @@ in_pcbconnect(struct inpcb *inp, struct mbuf *nam)
inp->inp_laddr.s_addr ? inp->inp_laddr : ifaddr->sin_addr,
inp->inp_lport, inp->inp_rtableid) != 0)
return (EADDRINUSE);
+ KASSERT(inp->inp_laddr.s_addr == INADDR_ANY || inp->inp_lport != 0);
if (inp->inp_laddr.s_addr == INADDR_ANY) {
if (inp->inp_lport == 0 &&
in_pcbbind(inp, NULL, curproc) == EADDRNOTAVAIL)
diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c
index b45ed2dca35..e674a51f88a 100644
--- a/sys/netinet/tcp_usrreq.c
+++ b/sys/netinet/tcp_usrreq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcp_usrreq.c,v 1.117 2013/11/22 07:59:09 mpi Exp $ */
+/* $OpenBSD: tcp_usrreq.c,v 1.118 2014/04/06 16:49:40 chrisz Exp $ */
/* $NetBSD: tcp_usrreq.c,v 1.20 1996/02/13 23:44:16 christos Exp $ */
/*
@@ -274,11 +274,6 @@ tcp_usrreq(so, req, m, nam, control, p)
break;
}
- if (inp->inp_lport == 0) {
- error = in6_pcbbind(inp, NULL, p);
- if (error)
- break;
- }
error = in6_pcbconnect(inp, nam);
} else if (sin->sin_family == AF_INET)
#endif /* INET6 */
@@ -291,11 +286,6 @@ tcp_usrreq(so, req, m, nam, control, p)
break;
}
- if (inp->inp_lport == 0) {
- error = in_pcbbind(inp, NULL, p);
- if (error)
- break;
- }
error = in_pcbconnect(inp, nam);
}
diff --git a/sys/netinet6/in6_pcb.c b/sys/netinet6/in6_pcb.c
index bbd3c50abab..cc06181a166 100644
--- a/sys/netinet6/in6_pcb.c
+++ b/sys/netinet6/in6_pcb.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: in6_pcb.c,v 1.59 2014/01/08 22:38:29 bluhm Exp $ */
+/* $OpenBSD: in6_pcb.c,v 1.60 2014/04/06 16:49:40 chrisz Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -448,6 +448,7 @@ in6_pcbconnect(struct inpcb *inp, struct mbuf *nam)
inp->inp_lport, INPLOOKUP_IPV6, inp->inp_rtableid)) {
return (EADDRINUSE);
}
+ KASSERT(IN6_IS_ADDR_UNSPECIFIED(&inp->inp_laddr6) || inp->inp_lport != 0);
if (IN6_IS_ADDR_UNSPECIFIED(&inp->inp_laddr6)) {
if (inp->inp_lport == 0)
(void)in6_pcbbind(inp, NULL, curproc);