From 77cbe15b1d84259394bbae273457ac05d6000a05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20H=C3=BC=C3=9Fler?= Date: Wed, 23 Mar 2022 20:51:14 +0100 Subject: [PATCH] ipv6/nib: bugfix of 6CO length checking --- sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c b/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c index d009d40e22..22e03af7f0 100644 --- a/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c +++ b/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c @@ -280,14 +280,10 @@ uint32_t _handle_6co(const icmpv6_hdr_t *icmpv6, #ifdef MODULE_GNRC_SIXLOWPAN_CTX uint8_t cid; #endif /* MODULE_GNRC_SIXLOWPAN_CTX */ - - if ((sixco->len != SIXLOWPAN_ND_OPT_6CTX_LEN_MIN) || - ((sixco->len != SIXLOWPAN_ND_OPT_6CTX_LEN_MAX) && - (sixco->ctx_len > 64U)) || - (icmpv6->type != ICMPV6_RTR_ADV)) { - DEBUG("nib: received 6CO of invalid length (%u), must be %u " - "or wasn't delivered by RA." - "\n", + (void)icmpv6; + if (sixco->len != (sixco->ctx_len > 64U + ? SIXLOWPAN_ND_OPT_6CTX_LEN_MAX : SIXLOWPAN_ND_OPT_6CTX_LEN_MIN)) { + DEBUG("nib: received 6CO of invalid length (%u), must be %u\n", sixco->len, (sixco->ctx_len > 64U) ? SIXLOWPAN_ND_OPT_6CTX_LEN_MAX : SIXLOWPAN_ND_OPT_6CTX_LEN_MIN);