diff --git a/sys/net/gnrc/network_layer/sixlowpan/iphc/gnrc_sixlowpan_iphc.c b/sys/net/gnrc/network_layer/sixlowpan/iphc/gnrc_sixlowpan_iphc.c index 1bbc2ad49a9e8c0c356c73fdb7733bfc52e1c63f..5305fd38b2e2c9c5a1e744c545c8050035396f5d 100644 --- a/sys/net/gnrc/network_layer/sixlowpan/iphc/gnrc_sixlowpan_iphc.c +++ b/sys/net/gnrc/network_layer/sixlowpan/iphc/gnrc_sixlowpan_iphc.c @@ -499,7 +499,12 @@ size_t gnrc_sixlowpan_iphc_decode(gnrc_pktsnip_t **dec_hdr, gnrc_pktsnip_t *pkt, switch (iphc_hdr[payload_offset] & NHC_ID_MASK) { case NHC_UDP_ID: payload_offset = iphc_nhc_udp_decode(pkt, dec_hdr, datagram_size, - payload_offset + offset) - offset; + payload_offset + offset); + + if (payload_offset != 0) { + payload_offset -= offset; + } + *nh_len += sizeof(udp_hdr_t); break;