diff --git a/os/net/routing/rpl-lite/rpl-icmp6.c b/os/net/routing/rpl-lite/rpl-icmp6.c index 99556854b6..61ef3c3530 100644 --- a/os/net/routing/rpl-lite/rpl-icmp6.c +++ b/os/net/routing/rpl-lite/rpl-icmp6.c @@ -319,6 +319,12 @@ dio_input(void) goto discard; } dio.prefix_info.length = buffer[i + 2]; + if(dio.prefix_info.length > sizeof(uip_ipaddr_t) * 8) { + LOG_WARN("dio_input: invalid DAG prefix info, len %u > %zu\n", + dio.prefix_info.length, sizeof(uip_ipaddr_t) * 8); + goto discard; + } + dio.prefix_info.flags = buffer[i + 3]; /* valid lifetime is ingnored for now - at i + 4 */ /* preferred lifetime stored in lifetime */