]> The Tcpdump Group git mirrors - tcpdump/commitdiff
ICMPv6: Add a length check in the rpl_dio_print() function
authorFrancois-Xavier Le Bail <[email protected]>
Sun, 6 Feb 2022 08:59:58 +0000 (09:59 +0100)
committerGuy Harris <[email protected]>
Sun, 17 Jul 2022 05:26:02 +0000 (22:26 -0700)
(backported from commit 23b99286ca05088ab94074100c96771bed0865e0)

print-icmp6.c

index 63c202c4eaf70e2076c8a67cdf580ef60fe3bd89..0ba65690147a303025a084600462cbce79b79240 100644 (file)
@@ -851,6 +851,7 @@ rpl_dio_print(netdissect_options *ndo,
 {
         const struct nd_rpl_dio *dio = (const struct nd_rpl_dio *)bp;
 
+        ND_LCHECK_ZU(length, sizeof(struct nd_rpl_dio));
         ND_PRINT(" [dagid:%s,seq:%u,instance:%u,rank:%u,%smop:%s,prf:%u]",
                   GET_IP6ADDR_STRING(dio->rpl_dagid),
                   GET_U_1(dio->rpl_dtsn),
@@ -865,6 +866,9 @@ rpl_dio_print(netdissect_options *ndo,
                 rpl_printopts(ndo, bp + sizeof(struct nd_rpl_dio),
                               length - sizeof(struct nd_rpl_dio));
         }
+        return;
+invalid:
+        nd_print_invalid(ndo);
 }
 
 static void