Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates-src > by-pkgid > 8e85ff9942bb6e7685bc12e8e318422c > files > 5

mipv6-daemon-0.4-5.fc13.src.rpm

diff -Nru mipv6-daemon-umip-0.4.orig/src/ha.c mipv6-daemon-umip-0.4/src/ha.c
--- mipv6-daemon-umip-0.4.orig/src/ha.c	2010-07-14 16:18:33.721547523 +0200
+++ mipv6-daemon-umip-0.4/src/ha.c	2010-07-14 16:19:03.935040609 +0200
@@ -105,7 +105,8 @@
 		if (opt[0] == ND_OPT_PREFIX_INFORMATION) {
 			struct nd_opt_prefix_info *p;
 			p = (struct nd_opt_prefix_info *)opt;
-			if (p->nd_opt_pi_prefix_len > 128)
+
+			if (olen < sizeof(*p) || p->nd_opt_pi_prefix_len > 128)
 				return;
 			p->nd_opt_pi_valid_time = 
 				ntohl(p->nd_opt_pi_valid_time);
@@ -118,6 +119,10 @@
 			   ra->nd_ra_flags_reserved & ND_RA_FLAG_HOME_AGENT) {
 			struct nd_opt_homeagent_info *hainfo;
 			hainfo = (struct nd_opt_homeagent_info *)opt;
+
+			if (olen < sizeof(*hainfo))
+				return;
+
 			pref = ntohs(hainfo->nd_opt_hai_preference);
 			life = ntohs(hainfo->nd_opt_hai_lifetime);
 		}
diff -Nru mipv6-daemon-umip-0.4.orig/src/mn.c mipv6-daemon-umip-0.4/src/mn.c
--- mipv6-daemon-umip-0.4.orig/src/mn.c	2010-07-14 16:18:33.724547328 +0200
+++ mipv6-daemon-umip-0.4/src/mn.c	2010-07-14 16:21:50.318547906 +0200
@@ -1639,10 +1639,8 @@
 	iif = pkt_info.ipi6_ifindex;
 	na = (struct nd_neighbor_advert *)msg;
 
-	if (iif != ifindex || 
-	    hoplimit < 255 || na->nd_na_code != 0 ||
-	    len < sizeof(struct nd_neighbor_advert) ||
-	    IN6_IS_ADDR_MULTICAST(&na->nd_na_target) ||
+	if (iif != ifindex || hoplimit < 255 || len < sizeof(*na) ||
+	    na->nd_na_code != 0 || IN6_IS_ADDR_MULTICAST(&na->nd_na_target) ||
 	    (na->nd_na_flags_reserved & ND_NA_FLAG_SOLICITED &&
 	     IN6_IS_ADDR_MULTICAST(daddr)))
 		return 0;