Blob Blame History Raw
--- 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. */