diff --git a/sys/net/gnrc/network_layer/ndp/gnrc_ndp.c b/sys/net/gnrc/network_layer/ndp/gnrc_ndp.c index 7fd4e09c67..ed68300248 100644 --- a/sys/net/gnrc/network_layer/ndp/gnrc_ndp.c +++ b/sys/net/gnrc/network_layer/ndp/gnrc_ndp.c @@ -144,6 +144,12 @@ void gnrc_ndp_nbr_sol_handle(kernel_pid_t iface, gnrc_pktsnip_t *pkt, } opt_offset += (opt->len * 8); sicmpv6_size -= (opt->len * 8); + +#if ENABLE_DEBUG + if (sicmpv6_size < 0) { + DEBUG("ndp: Option parsing out of sync.\n"); + } +#endif } #ifdef MODULE_GNRC_SIXLOWPAN_ND_ROUTER gnrc_ipv6_netif_t *ipv6_iface = gnrc_ipv6_netif_get(iface); @@ -247,6 +253,12 @@ void gnrc_ndp_nbr_adv_handle(kernel_pid_t iface, gnrc_pktsnip_t *pkt, opt_offset += (opt->len * 8); sicmpv6_size -= (opt->len * 8); + +#if ENABLE_DEBUG + if (sicmpv6_size < 0) { + DEBUG("ndp: Option parsing out of sync.\n"); + } +#endif } LL_SEARCH_SCALAR(pkt, netif, type, GNRC_NETTYPE_NETIF); @@ -383,6 +395,12 @@ void gnrc_ndp_rtr_sol_handle(kernel_pid_t iface, gnrc_pktsnip_t *pkt, opt_offset += (opt->len * 8); sicmpv6_size -= (opt->len * 8); + +#if ENABLE_DEBUG + if (sicmpv6_size < 0) { + DEBUG("ndp: Option parsing out of sync.\n"); + } +#endif } _stale_nc(iface, &ipv6->src, l2src, l2src_len); /* send delayed */ @@ -547,7 +565,15 @@ void gnrc_ndp_rtr_adv_handle(kernel_pid_t iface, gnrc_pktsnip_t *pkt, ipv6_hdr_t break; #endif } + + opt_offset += (opt->len * 8); sicmpv6_size -= (opt->len * 8); + +#if ENABLE_DEBUG + if (sicmpv6_size < 0) { + DEBUG("ndp: Option parsing out of sync.\n"); + } +#endif } #if ENABLE_DEBUG && defined(MODULE_NG_SIXLOWPAN_ND) if ((if_entry->flags & GNRC_IPV6_NETIF_FLAGS_SIXLOWPAN) && (l2src_len <= 0)) {