From 0fff1b35ecc06bb2ff7971ebefa4d590ca5c5b7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Tempel?= Date: Mon, 26 Aug 2019 13:05:20 +0200 Subject: [PATCH] gnrc_tcp: add minimum length check to _receive --- sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c b/sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c index 0261d6cc35..3234d8d644 100644 --- a/sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c +++ b/sys/net/gnrc/transport_layer/tcp/gnrc_tcp_eventloop.c @@ -136,6 +136,12 @@ static int _receive(gnrc_pktsnip_t *pkt) return 0; } + if (tcp->size < sizeof(tcp_hdr_t)) { + DEBUG("gnrc_tcp_eventloop.c : _receive() : packet is too short\n"); + gnrc_pktbuf_release(pkt); + return -ERANGE; + } + /* Extract control bits, src and dst ports and check if SYN is set (not SYN+ACK) */ hdr = (tcp_hdr_t *)tcp->data; ctl = byteorder_ntohs(hdr->off_ctl);