diff --git a/sys/net/gnrc/network_layer/sixlowpan/frag/rbuf.c b/sys/net/gnrc/network_layer/sixlowpan/frag/rbuf.c index 1203fc12b7..fc2d16bacc 100644 --- a/sys/net/gnrc/network_layer/sixlowpan/frag/rbuf.c +++ b/sys/net/gnrc/network_layer/sixlowpan/frag/rbuf.c @@ -87,11 +87,16 @@ static int _rbuf_add(gnrc_netif_hdr_t *netif_hdr, gnrc_pktsnip_t *pkt, size_t offset, unsigned page) { rbuf_t *entry; - sixlowpan_frag_t *frag = pkt->data; + sixlowpan_frag_n_t *frag = pkt->data; rbuf_int_t *ptr; uint8_t *data = ((uint8_t *)pkt->data) + sizeof(sixlowpan_frag_t); size_t frag_size; + /* check if provided offset is the same as in fragment */ + assert(((((frag->disp_size.u8[0] & SIXLOWPAN_FRAG_DISP_MASK) == + SIXLOWPAN_FRAG_1_DISP)) && (offset == 0)) || + ((((frag->disp_size.u8[0] & SIXLOWPAN_FRAG_DISP_MASK) == + SIXLOWPAN_FRAG_N_DISP)) && (offset == (frag->offset * 8U)))); rbuf_gc(); entry = _rbuf_get(gnrc_netif_hdr_get_src_addr(netif_hdr), netif_hdr->src_l2addr_len, gnrc_netif_hdr_get_dst_addr(netif_hdr), netif_hdr->dst_l2addr_len,