Skip to content

Commit 26ec532

Browse files
authored
Don't allow invalid window size
port from me-no-dev/AsyncTCP#187
1 parent 9355538 commit 26ec532

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

src/AsyncTCP.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,9 @@ static esp_err_t _tcp_output(tcp_pcb* pcb, int8_t closed_slot) {
456456
static err_t _tcp_write_api(struct tcpip_api_call_data* api_call_msg) {
457457
tcp_api_call_t* msg = (tcp_api_call_t*)api_call_msg;
458458
msg->err = ERR_CONN;
459-
if (msg->closed_slot == INVALID_CLOSED_SLOT || !_closed_slots[msg->closed_slot]) {
459+
460+
const uint32_t new_rcv_ann_wnd = msg->pcb->rcv_ann_right_edge - msg->pcb->rcv_nxt;
461+
if((msg->closed_slot == -1 || !_closed_slots[msg->closed_slot]) && (new_rcv_ann_wnd <= 0xffff || LWIP_WND_SCALE)) {
460462
msg->err = tcp_write(msg->pcb, msg->write.data, msg->write.size, msg->write.apiflags);
461463
}
462464
return msg->err;

0 commit comments

Comments
 (0)