diff options
-rw-r--r-- | sys/netinet/in_pcb.c | 3 | ||||
-rw-r--r-- | sys/netinet/tcp_usrreq.c | 12 | ||||
-rw-r--r-- | sys/netinet6/in6_pcb.c | 3 |
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); |