From 01370511dfc619f2c44a763b77c05050888899c8 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Tue, 15 Jan 2019 19:45:51 +0100 Subject: [PATCH] gnrc_sixlowpan_frag: drop received duplicates Otherwise duplicate fragments are added to the number of already received datagram bytes in L153 leading to possible race-conditions. --- sys/net/gnrc/network_layer/sixlowpan/frag/rbuf.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/net/gnrc/network_layer/sixlowpan/frag/rbuf.c b/sys/net/gnrc/network_layer/sixlowpan/frag/rbuf.c index 3e98b52c59..0f2f27122f 100644 --- a/sys/net/gnrc/network_layer/sixlowpan/frag/rbuf.c +++ b/sys/net/gnrc/network_layer/sixlowpan/frag/rbuf.c @@ -139,7 +139,12 @@ static int _rbuf_add(gnrc_netif_hdr_t *netif_hdr, gnrc_pktsnip_t *pkt, * https://tools.ietf.org/html/rfc4944#section-5.3 */ return RBUF_ADD_REPEAT; } - + /* End was already checked in overlap check */ + if (ptr->start == offset) { + DEBUG("6lo rbuf: fragment already in reassembly buffer"); + gnrc_pktbuf_release(pkt); + return RBUF_ADD_SUCCESS; + } ptr = ptr->next; }