53 lines
1.5 KiB
Diff
53 lines
1.5 KiB
Diff
|
--- dhcp-3.0.5/common/packet.c.memory 2005-03-03 11:55:23.000000000 -0500
|
||
|
+++ dhcp-3.0.5/common/packet.c 2007-03-30 17:11:06.000000000 -0400
|
||
|
@@ -140,6 +140,7 @@
|
||
|
struct ip ip;
|
||
|
struct udphdr udp;
|
||
|
|
||
|
+ memset( &ip, '\0', sizeof ip);
|
||
|
/* Fill out the IP header */
|
||
|
IP_V_SET (&ip, 4);
|
||
|
IP_HL_SET (&ip, 20);
|
||
|
@@ -219,7 +220,7 @@
|
||
|
{
|
||
|
unsigned char *data;
|
||
|
struct ip ip;
|
||
|
- struct udphdr *udp;
|
||
|
+ struct udphdr udph, *udp=&udph;
|
||
|
u_int32_t ip_len = (buf [bufix] & 0xf) << 2;
|
||
|
u_int32_t sum, usum;
|
||
|
static int ip_packets_seen;
|
||
|
@@ -233,7 +234,7 @@
|
||
|
int ignore = 0;
|
||
|
|
||
|
memcpy(&ip, buf + bufix, sizeof (struct ip));
|
||
|
- udp = (struct udphdr *)(buf + bufix + ip_len);
|
||
|
+ memcpy(udp, buf + bufix + ip_len, sizeof(struct udphdr));
|
||
|
|
||
|
#ifdef USERLAND_FILTER
|
||
|
/* Is it a UDP packet? */
|
||
|
--- dhcp-3.0.5/common/lpf.c.memory 2007-03-30 17:11:06.000000000 -0400
|
||
|
+++ dhcp-3.0.5/common/lpf.c 2007-03-30 17:11:55.000000000 -0400
|
||
|
@@ -246,6 +246,7 @@
|
||
|
struct interface_info *info;
|
||
|
{
|
||
|
struct sock_fprog p;
|
||
|
+ memset(&p,'\0', sizeof(struct sock_fprog));
|
||
|
|
||
|
/* Set up the bpf filter program structure. This is defined in
|
||
|
bpf.c */
|
||
|
--- dhcp-3.0.5/minires/ns_name.c.memory 2004-06-10 13:59:40.000000000 -0400
|
||
|
+++ dhcp-3.0.5/minires/ns_name.c 2007-03-30 17:11:06.000000000 -0400
|
||
|
@@ -71,6 +71,11 @@
|
||
|
dn = dst;
|
||
|
eom = dst + dstsiz;
|
||
|
|
||
|
+ if (dn >= eom) {
|
||
|
+ errno = EMSGSIZE;
|
||
|
+ return (-1);
|
||
|
+ }
|
||
|
+
|
||
|
while ((n = *cp++) != 0) {
|
||
|
if ((n & NS_CMPRSFLGS) != 0) {
|
||
|
/* Some kind of compression pointer. */
|