Index: tcp_usrreq.c =================================================================== RCS file: /private/FreeBSD/src/sys/netinet/tcp_usrreq.c,v retrieving revision 1.51.2.21 diff -u -p -r1.51.2.21 tcp_usrreq.c --- tcp_usrreq.c 22 Mar 2004 23:59:55 -0000 1.51.2.21 +++ tcp_usrreq.c 19 Apr 2004 20:32:59 -0000 @@ -203,8 +203,10 @@ tcp_usr_bind(struct socket *so, struct s * to them. */ sinp = (struct sockaddr_in *)nam; - if (nam->sa_len != sizeof (*sinp)) - return (EINVAL); + if (nam->sa_len != sizeof (*sinp)) { + error = EINVAL; + goto out; + } if (sinp->sin_family == AF_INET && IN_MULTICAST(ntohl(sinp->sin_addr.s_addr))) { error = EAFNOSUPPORT; @@ -234,8 +236,10 @@ tcp6_usr_bind(struct socket *so, struct * to them. */ sin6p = (struct sockaddr_in6 *)nam; - if (nam->sa_len != sizeof (*sin6p)) - return (EINVAL); + if (nam->sa_len != sizeof (*sin6p)) { + error = EINVAL; + goto out; + } if (sin6p->sin6_family == AF_INET6 && IN6_IS_ADDR_MULTICAST(&sin6p->sin6_addr)) { error = EAFNOSUPPORT; @@ -326,8 +330,10 @@ tcp_usr_connect(struct socket *so, struc * Must disallow TCP ``connections'' to multicast addresses. */ sinp = (struct sockaddr_in *)nam; - if (nam->sa_len != sizeof (*sinp)) - return (EINVAL); + if (nam->sa_len != sizeof (*sinp)) { + error = EINVAL; + goto out; + } if (sinp->sin_family == AF_INET && IN_MULTICAST(ntohl(sinp->sin_addr.s_addr))) { error = EAFNOSUPPORT; @@ -358,8 +364,10 @@ tcp6_usr_connect(struct socket *so, stru * Must disallow TCP ``connections'' to multicast addresses. */ sin6p = (struct sockaddr_in6 *)nam; - if (nam->sa_len != sizeof (*sin6p)) - return (EINVAL); + if (nam->sa_len != sizeof (*sin6p)) { + error = EINVAL; + goto out; + } if (sin6p->sin6_family == AF_INET6 && IN6_IS_ADDR_MULTICAST(&sin6p->sin6_addr)) { error = EAFNOSUPPORT;