Author: tuexen
Date: Sun May 19 17:53:36 2019
New Revision: 347976
URL: https://svnweb.freebsd.org/changeset/base/347976

Log:
  Allow sending on demand SCTP HEARTBEATS only in the ESTABLISHED state.
  This issue was found by running syzkaller.
  
  MFC after:            3 days

Modified:
  head/sys/netinet/sctp_usrreq.c

Modified: head/sys/netinet/sctp_usrreq.c
==============================================================================
--- head/sys/netinet/sctp_usrreq.c      Sun May 19 17:28:00 2019        
(r347975)
+++ head/sys/netinet/sctp_usrreq.c      Sun May 19 17:53:36 2019        
(r347976)
@@ -5332,10 +5332,11 @@ sctp_setopt(struct socket *so, int optname, void *optv
                                                net->dest_state &= 
~SCTP_ADDR_NOHB;
                                        }
                                        if (paddrp->spp_flags & SPP_HB_DEMAND) {
-                                               /* on demand HB */
-                                               sctp_send_hb(stcb, net, 
SCTP_SO_LOCKED);
-                                               sctp_chunk_output(inp, stcb, 
SCTP_OUTPUT_FROM_SOCKOPT, SCTP_SO_LOCKED);
-                                               
sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net);
+                                               if (SCTP_GET_STATE(stcb) == 
SCTP_STATE_OPEN) {
+                                                       sctp_send_hb(stcb, net, 
SCTP_SO_LOCKED);
+                                                       sctp_chunk_output(inp, 
stcb, SCTP_OUTPUT_FROM_SOCKOPT, SCTP_SO_LOCKED);
+                                                       
sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net);
+                                               }
                                        }
                                        if ((paddrp->spp_flags & 
SPP_PMTUD_DISABLE) && (paddrp->spp_pathmtu >= SCTP_SMALLEST_PMTU)) {
                                                if 
(SCTP_OS_TIMER_PENDING(&net->pmtu_timer.timer)) {
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to