summaryrefslogtreecommitdiffstats
path: root/usr.sbin/tcpdump/print-udp.c
diff options
context:
space:
mode:
authornaddy <naddy@openbsd.org>2014-01-26 18:03:27 +0000
committernaddy <naddy@openbsd.org>2014-01-26 18:03:27 +0000
commit2961f03a094ea49186bb3177a004910e89f9ef5d (patch)
tree05b71961184b011be93bf55a4404805ad4488258 /usr.sbin/tcpdump/print-udp.c
parentAttempt to make user changes of keyboard layout a bit more `sticky' on wsmux (diff)
downloadwireguard-openbsd-2961f03a094ea49186bb3177a004910e89f9ef5d.tar.xz
wireguard-openbsd-2961f03a094ea49186bb3177a004910e89f9ef5d.zip
show that zero checksums are invalid for UDP over IPv6; input & ok bluhm@
Diffstat (limited to 'usr.sbin/tcpdump/print-udp.c')
-rw-r--r--usr.sbin/tcpdump/print-udp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/usr.sbin/tcpdump/print-udp.c b/usr.sbin/tcpdump/print-udp.c
index 4ddfbdeb732..f1ecd7a83ef 100644
--- a/usr.sbin/tcpdump/print-udp.c
+++ b/usr.sbin/tcpdump/print-udp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: print-udp.c,v 1.34 2010/01/12 06:10:33 naddy Exp $ */
+/* $OpenBSD: print-udp.c,v 1.35 2014/01/26 18:03:27 naddy Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996
@@ -581,7 +581,9 @@ udp_print(register const u_char *bp, u_int length, register const u_char *bp2)
if (ip->ip_v == 6 && ip6->ip6_plen && vflag) {
int sum = up->uh_sum;
/* for IPv6, UDP checksum is mandatory */
- if (TTEST2(cp[0], length)) {
+ if (sum == 0) {
+ (void)printf(" [invalid cksum 0]");
+ } else if (TTEST2(cp[0], length)) {
sum = udp6_cksum(ip6, up, length + sizeof(struct udphdr));
if (sum != 0)
(void)printf(" [bad udp cksum %x!]", sum);