]> The Tcpdump Group git mirrors - tcpdump/commitdiff
frag6: Add a bounds check in non-verbose mode
authorFrancois-Xavier Le Bail <[email protected]>
Sat, 4 Jan 2025 19:09:37 +0000 (20:09 +0100)
committerfxlb <[email protected]>
Sun, 5 Jan 2025 11:03:50 +0000 (11:03 +0000)
Define ND_LONGJMP_FROM_TCHECK.

Rename a test and its output, with "-v" in the names.
Add a test case (same pcap printed without "-v").

print-frag6.c
tests/TESTLIST
tests/ip6_frag_asan-v.out [new file with mode: 0644]
tests/ip6_frag_asan.out

index a4b3be0d43ffc784912d4f5d418d9b3ab851e400..abc2a6367380927c6fe242c06b6f7a7df34717e2 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "netdissect-stdinc.h"
 
+#define ND_LONGJMP_FROM_TCHECK
 #include "netdissect.h"
 #include "extract.h"
 
@@ -43,6 +44,8 @@ frag6_print(netdissect_options *ndo, const u_char *bp, const u_char *bp2)
        ND_PRINT("frag (");
        if (ndo->ndo_vflag)
                ND_PRINT("0x%08x:", GET_BE_U_4(dp->ip6f_ident));
+       else
+               ND_TCHECK_4(dp->ip6f_ident);
        ND_PRINT("%u|", GET_BE_U_2(dp->ip6f_offlg) & IP6F_OFF_MASK);
        if ((bp - bp2) + sizeof(struct ip6_frag) >
            sizeof(struct ip6_hdr) + GET_BE_U_2(ip6->ip6_plen))
index ae9929b30b1a6b0bd6833343edcb212745753eab..c9dca05d79065ef9e25fb12a4462972349fde5da 100644 (file)
@@ -773,7 +773,8 @@ pim_header_asan             pim_header_asan.pcap            pim_header_asan.out     -v
 pim_header_asan-2      pim_header_asan-2.pcap          pim_header_asan-2.out   -v
 pim_header_asan-3      pim_header_asan-3.pcap          pim_header_asan-3.out   -v
 pim_header_asan-4      pim_header_asan-4.pcap          pim_header_asan-4.out   -v
-ip6_frag_asan          ip6_frag_asan.pcap              ip6_frag_asan.out       -v
+ip6_frag_asan          ip6_frag_asan.pcap              ip6_frag_asan.out
+ip6_frag_asan-v                ip6_frag_asan.pcap              ip6_frag_asan-v.out     -v
 radius_attr_asan       radius_attr_asan.pcap           radius_attr_asan.out    -v
 ospf6_decode_v3_asan   ospf6_decode_v3_asan.pcap       ospf6_decode_v3_asan.out -v
 ip_ts_opts_asan                ip_ts_opts_asan.pcap            ip_ts_opts_asan.out     -v
diff --git a/tests/ip6_frag_asan-v.out b/tests/ip6_frag_asan-v.out
new file mode 100644 (file)
index 0000000..e0f73aa
--- /dev/null
@@ -0,0 +1 @@
+    1  2038-01-01 00:00:00.000000 IP6 (class 0x51, flowlabel 0xb2100, hlim 16, next-header Fragment (44), payload length 27136) 452:22:19:0:41a:e4ff:10ff:484d > 2243:80:1400:100:19:ffff:ffff:fffb: frag ( [|frag6]
index e0f73aa2b09d086fd34e6c76ce5bd88f5e59ac6a..af290420c3f806f04585a1772dcd7c2061d7009c 100644 (file)
@@ -1 +1 @@
-    1  2038-01-01 00:00:00.000000 IP6 (class 0x51, flowlabel 0xb2100, hlim 16, next-header Fragment (44), payload length 27136) 452:22:19:0:41a:e4ff:10ff:484d > 2243:80:1400:100:19:ffff:ffff:fffb: frag ( [|frag6]
+    1  2038-01-01 00:00:00.000000 IP6 452:22:19:0:41a:e4ff:10ff:484d > 2243:80:1400:100:19:ffff:ffff:fffb: frag ( [|frag6]