summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2004-03-21 20:58:11 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2004-03-21 20:58:11 +0000
commit8f03be1706c088eaf9fa82c7f62a34857a111d9d (patch)
treed48bc059c736f5a2fab164bf529609fc9de36eb0
parentd75fb8e03ddda66883c101db9759403de9ea8339 (diff)
fix udp checksum verification if ip options are present;
report from Pyun via dhartmei@; ok mcbride@, dhartmei@
-rw-r--r--sys/netinet/udp_usrreq.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 4f40fd45230..92db5bf4ac2 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: udp_usrreq.c,v 1.98 2004/02/17 12:07:45 markus Exp $ */
+/* $OpenBSD: udp_usrreq.c,v 1.99 2004/03/21 20:58:10 markus Exp $ */
/* $NetBSD: udp_usrreq.c,v 1.28 1996/03/16 23:54:03 christos Exp $ */
/*
@@ -293,12 +293,8 @@ udp_input(struct mbuf *m, ...)
return;
}
- bzero(((struct ipovly *)ip)->ih_x1,
- sizeof ((struct ipovly *)ip)->ih_x1);
- ((struct ipovly *)ip)->ih_len = uh->uh_ulen;
-
- if ((uh->uh_sum = in_cksum(m, len +
- sizeof (struct ip))) != 0) {
+ if ((uh->uh_sum = in4_cksum(m, IPPROTO_UDP,
+ iphlen, len))) {
udpstat.udps_badsum++;
m_freem(m);
return;