From 82480a55839236a6cfb18773a8bd660edf97f636 Mon Sep 17 00:00:00 2001 From: Matheus Date: Sun, 16 Jun 2024 12:49:59 -0300 Subject: [PATCH] tcp: validate reset if in sequence window --- kernel-src/io/net/tcp.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/kernel-src/io/net/tcp.c b/kernel-src/io/net/tcp.c index 223bf454..faf2007b 100644 --- a/kernel-src/io/net/tcp.c +++ b/kernel-src/io/net/tcp.c @@ -906,8 +906,7 @@ __attribute__((noreturn)) static void tcp_worker() { continue; } - // TODO validade reset if in sequence window (rfc 793 page 37) - if (tcpheader->seq == tcb->rcvnext && (tcpheader->control & CONTROL_RST) && tcb->state != TCB_STATE_LISTEN) { + if (seqinrange(tcpheader->seq, tcpheader->seq + 1, tcb->rcvnext, tcb->rcvnext + tcb->rcvwindow) && (tcpheader->control & CONTROL_RST) && tcb->state != TCB_STATE_LISTEN) { tcp_reset(tcb); MUTEX_RELEASE(&tcb->mutex); TCB_RELEASE(tcb);