summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2013-02-03 21:04:19 +0000
committerkrw <krw@openbsd.org>2013-02-03 21:04:19 +0000
commit9c0483d2e9b698a49d97f2b8b310e2ee2a32ccfb (patch)
tree01f32d1ad5b1ecce6c1a17f4edd0844ca0763758
parentSanitize LINK_SPEC for hppa64, making it identical to what we have on amd64 (diff)
downloadwireguard-openbsd-9c0483d2e9b698a49d97f2b8b310e2ee2a32ccfb.tar.xz
wireguard-openbsd-9c0483d2e9b698a49d97f2b8b310e2ee2a32ccfb.zip
Remove unused (a.k.a. always passed NULL) parameter 'data' from
decode_udp_ip_header() and the useless check of it. Part of original diff from pelikan about udp length errors.
-rw-r--r--sbin/dhclient/bpf.c4
-rw-r--r--sbin/dhclient/dhcpd.h4
-rw-r--r--sbin/dhclient/packet.c45
-rw-r--r--usr.sbin/dhcpd/bpf.c4
-rw-r--r--usr.sbin/dhcpd/dhcpd.h4
-rw-r--r--usr.sbin/dhcpd/packet.c43
6 files changed, 51 insertions, 53 deletions
diff --git a/sbin/dhclient/bpf.c b/sbin/dhclient/bpf.c
index 0ba323e4dd6..50f5a7814b5 100644
--- a/sbin/dhclient/bpf.c
+++ b/sbin/dhclient/bpf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: bpf.c,v 1.24 2012/12/29 14:40:00 krw Exp $ */
+/* $OpenBSD: bpf.c,v 1.25 2013/02/03 21:04:19 krw Exp $ */
/* BPF socket interface code, originally contributed by Archie Cobbs. */
@@ -380,7 +380,7 @@ receive_packet(struct sockaddr_in *from, struct hardware *hfrom)
/* Decode the IP and UDP headers... */
offset = decode_udp_ip_header(ifi->rbuf,
- ifi->rbuf_offset, from, NULL, hdr.bh_caplen);
+ ifi->rbuf_offset, from, hdr.bh_caplen);
/* If the IP or UDP checksum was bad, skip the packet... */
if (offset < 0) {
diff --git a/sbin/dhclient/dhcpd.h b/sbin/dhclient/dhcpd.h
index fb2e60a8355..3b620a8679e 100644
--- a/sbin/dhclient/dhcpd.h
+++ b/sbin/dhclient/dhcpd.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: dhcpd.h,v 1.107 2013/01/27 02:45:46 krw Exp $ */
+/* $OpenBSD: dhcpd.h,v 1.108 2013/02/03 21:04:19 krw Exp $ */
/*
* Copyright (c) 2004 Henning Brauer <henning@openbsd.org>
@@ -311,7 +311,7 @@ void assemble_udp_ip_header(unsigned char *, int *, u_int32_t, u_int32_t,
unsigned int, unsigned char *, int);
ssize_t decode_hw_header(unsigned char *, int, struct hardware *);
ssize_t decode_udp_ip_header(unsigned char *, int, struct sockaddr_in *,
- unsigned char *, int);
+ int);
/* clparse.c */
int read_client_conf(void);
diff --git a/sbin/dhclient/packet.c b/sbin/dhclient/packet.c
index 5ac0c55b5b2..3210b8f273c 100644
--- a/sbin/dhclient/packet.c
+++ b/sbin/dhclient/packet.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: packet.c,v 1.15 2013/01/05 13:41:56 krw Exp $ */
+/* $OpenBSD: packet.c,v 1.16 2013/02/03 21:04:19 krw Exp $ */
/* Packet assembly code, originally contributed by Archie Cobbs. */
@@ -158,10 +158,11 @@ decode_hw_header(unsigned char *buf, int bufix, struct hardware *from)
ssize_t
decode_udp_ip_header(unsigned char *buf, int bufix, struct sockaddr_in *from,
- unsigned char *data, int buflen)
+ int buflen)
{
struct ip *ip;
struct udphdr *udp;
+ unsigned char *data;
u_int32_t ip_len = (buf[bufix] & 0xf) << 2;
u_int32_t sum, usum;
static int ip_packets_seen;
@@ -170,7 +171,7 @@ decode_udp_ip_header(unsigned char *buf, int bufix, struct sockaddr_in *from,
static int udp_packets_bad_checksum;
static int udp_packets_length_checked;
static int udp_packets_length_overflow;
- int len = 0;
+ int len;
ip = (struct ip *)(buf + bufix);
udp = (struct udphdr *)(buf + bufix + ip_len);
@@ -198,31 +199,29 @@ decode_udp_ip_header(unsigned char *buf, int bufix, struct sockaddr_in *from,
/*
* Compute UDP checksums, including the ``pseudo-header'', the
- * UDP header and the data. If the UDP checksum field is zero,
+ * UDP header and the data. If the UDP checksum field is zero,
* we're not supposed to do a checksum.
*/
- if (!data) {
- data = buf + bufix + ip_len + sizeof(*udp);
- len = ntohs(udp->uh_ulen) - sizeof(*udp);
- udp_packets_length_checked++;
- if ((len < 0) || (len + data > buf + bufix + buflen)) {
- udp_packets_length_overflow++;
- if (udp_packets_length_checked > 4 &&
- (udp_packets_length_checked /
- udp_packets_length_overflow) < 2) {
- note("%d udp packets in %d too long - dropped",
- udp_packets_length_overflow,
- udp_packets_length_checked);
- udp_packets_length_overflow =
- udp_packets_length_checked = 0;
- }
- return (-1);
+ data = buf + bufix + ip_len + sizeof(*udp);
+ len = ntohs(udp->uh_ulen) - sizeof(*udp);
+ udp_packets_length_checked++;
+ if ((len < 0) || (len + data > buf + bufix + buflen)) {
+ udp_packets_length_overflow++;
+ if (udp_packets_length_checked > 4 &&
+ (udp_packets_length_checked /
+ udp_packets_length_overflow) < 2) {
+ note("%d udp packets in %d too long - dropped",
+ udp_packets_length_overflow,
+ udp_packets_length_checked);
+ udp_packets_length_overflow =
+ udp_packets_length_checked = 0;
}
+ return (-1);
+ }
#ifdef DEBUG
- if (len + data != buf + bufix + buflen)
- debug("accepting packet with data after udp payload.");
+ if (len + data != buf + bufix + buflen)
+ debug("accepting packet with data after udp payload.");
#endif
- }
usum = udp->uh_sum;
udp->uh_sum = 0;
diff --git a/usr.sbin/dhcpd/bpf.c b/usr.sbin/dhcpd/bpf.c
index efa3fcff140..a17147d03e3 100644
--- a/usr.sbin/dhcpd/bpf.c
+++ b/usr.sbin/dhcpd/bpf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: bpf.c,v 1.8 2009/12/14 22:12:14 mpf Exp $ */
+/* $OpenBSD: bpf.c,v 1.9 2013/02/03 21:04:19 krw Exp $ */
/* BPF socket interface code, originally contributed by Archie Cobbs. */
@@ -341,7 +341,7 @@ receive_packet(struct interface_info *interface, unsigned char *buf,
/* Decode the IP and UDP headers... */
offset = decode_udp_ip_header(interface, interface->rbuf,
- interface->rbuf_offset, from, NULL, hdr.bh_caplen);
+ interface->rbuf_offset, from, hdr.bh_caplen);
/* If the IP or UDP checksum was bad, skip the packet... */
if (offset < 0) {
diff --git a/usr.sbin/dhcpd/dhcpd.h b/usr.sbin/dhcpd/dhcpd.h
index 075d8222ad0..125e71fbfb2 100644
--- a/usr.sbin/dhcpd/dhcpd.h
+++ b/usr.sbin/dhcpd/dhcpd.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: dhcpd.h,v 1.45 2010/04/19 12:22:09 claudio Exp $ */
+/* $OpenBSD: dhcpd.h,v 1.46 2013/02/03 21:04:19 krw Exp $ */
/*
* Copyright (c) 1995, 1996, 1997, 1998, 1999
@@ -679,7 +679,7 @@ void assemble_udp_ip_header(struct interface_info *, unsigned char *,
ssize_t decode_hw_header(struct interface_info *, unsigned char *,
int, struct hardware *);
ssize_t decode_udp_ip_header(struct interface_info *, unsigned char *,
- int, struct sockaddr_in *, unsigned char *, int);
+ int, struct sockaddr_in *, int);
u_int32_t checksum(unsigned char *, unsigned, u_int32_t);
u_int32_t wrapsum(u_int32_t);
diff --git a/usr.sbin/dhcpd/packet.c b/usr.sbin/dhcpd/packet.c
index 00e06d7dd97..30d221605a7 100644
--- a/usr.sbin/dhcpd/packet.c
+++ b/usr.sbin/dhcpd/packet.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: packet.c,v 1.4 2013/01/05 12:34:53 krw Exp $ */
+/* $OpenBSD: packet.c,v 1.5 2013/02/03 21:04:19 krw Exp $ */
/* Packet assembly code, originally contributed by Archie Cobbs. */
@@ -160,10 +160,11 @@ decode_hw_header(struct interface_info *interface, unsigned char *buf,
ssize_t
decode_udp_ip_header(struct interface_info *interface, unsigned char *buf,
- int bufix, struct sockaddr_in *from, unsigned char *data, int buflen)
+ int bufix, struct sockaddr_in *from, int buflen)
{
struct ip *ip;
struct udphdr *udp;
+ unsigned char *data;
u_int32_t ip_len = (buf[bufix] & 0xf) << 2;
u_int32_t sum, usum;
static int ip_packets_seen;
@@ -172,7 +173,7 @@ decode_udp_ip_header(struct interface_info *interface, unsigned char *buf,
static int udp_packets_bad_checksum;
static int udp_packets_length_checked;
static int udp_packets_length_overflow;
- int len = 0;
+ int len;
ip = (struct ip *)(buf + bufix);
udp = (struct udphdr *)(buf + bufix + ip_len);
@@ -198,29 +199,27 @@ decode_udp_ip_header(struct interface_info *interface, unsigned char *buf,
/*
* Compute UDP checksums, including the ``pseudo-header'', the
- * UDP header and the data. If the UDP checksum field is zero,
+ * UDP header and the data. If the UDP checksum field is zero,
* we're not supposed to do a checksum.
*/
- if (!data) {
- data = buf + bufix + ip_len + sizeof(*udp);
- len = ntohs(udp->uh_ulen) - sizeof(*udp);
- udp_packets_length_checked++;
- if ((len < 0) || (len + data > buf + bufix + buflen)) {
- udp_packets_length_overflow++;
- if (udp_packets_length_checked > 4 &&
- (udp_packets_length_checked /
- udp_packets_length_overflow) < 2) {
- note("%d udp packets in %d too long - dropped",
- udp_packets_length_overflow,
- udp_packets_length_checked);
- udp_packets_length_overflow =
- udp_packets_length_checked = 0;
- }
- return (-1);
+ data = buf + bufix + ip_len + sizeof(*udp);
+ len = ntohs(udp->uh_ulen) - sizeof(*udp);
+ udp_packets_length_checked++;
+ if ((len < 0) || (len + data > buf + bufix + buflen)) {
+ udp_packets_length_overflow++;
+ if (udp_packets_length_checked > 4 &&
+ (udp_packets_length_checked /
+ udp_packets_length_overflow) < 2) {
+ note("%d udp packets in %d too long - dropped",
+ udp_packets_length_overflow,
+ udp_packets_length_checked);
+ udp_packets_length_overflow =
+ udp_packets_length_checked = 0;
}
- if (len + data != buf + bufix + buflen)
- debug("accepting packet with data after udp payload.");
+ return (-1);
}
+ if (len + data != buf + bufix + buflen)
+ debug("accepting packet with data after udp payload.");
usum = udp->uh_sum;
udp->uh_sum = 0;