mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-07 00:50:50 +00:00
tcp: Disallow connecting a disconnected socket
Currently nothing prevents tcp_usr_connect() from attempting to connect when the socket has been disconnected. At the moment, doing so triggers an assertion in in_pcbconnect() because inp_faddr is not unspecified. I believe this may have been caught in the past by TIMEWAIT checks, but those are now removed. Check for additional socket states in tcp_connect(). Reported by: syzbot+f0f7871ec5397602b446@syzkaller.appspotmail.com Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D40579
This commit is contained in:
parent
6775ef4188
commit
de0a2eb2ef
|
@ -1464,7 +1464,8 @@ tcp_connect(struct tcpcb *tp, struct sockaddr_in *sin, struct thread *td)
|
|||
INP_WLOCK_ASSERT(inp);
|
||||
|
||||
if (__predict_false((so->so_state &
|
||||
(SS_ISCONNECTING | SS_ISCONNECTED)) != 0))
|
||||
(SS_ISCONNECTING | SS_ISCONNECTED | SS_ISDISCONNECTING |
|
||||
SS_ISDISCONNECTED)) != 0))
|
||||
return (EISCONN);
|
||||
|
||||
INP_HASH_WLOCK(&V_tcbinfo);
|
||||
|
|
Loading…
Reference in a new issue