Hi,
This makes icmp6 ready for 64 bit time_t by adding a range check
and an explicit cast.
ok?
bluhm
Index: netinet6/icmp6.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet6/icmp6.c,v
retrieving revision 1.123
diff -u -p -r1.123 icmp6.c
--- netinet6/icmp6.c 28 Mar 2013 16:45:16 -0000 1.123
+++ netinet6/icmp6.c 3 Apr 2013 22:13:36 -0000
@@ -1819,11 +1819,15 @@ ni6_store_addrs(struct icmp6_nodeinfo *n
if (ifa6->ia6_lifetime.ia6t_expire == 0)
ltime = ND6_INFINITE_LIFETIME;
else {
- if (ifa6->ia6_lifetime.ia6t_expire >
- time_second)
- ltime =
htonl(ifa6->ia6_lifetime.ia6t_expire - time_second);
- else
+ time_t diff = ifa6->ia6_lifetime.ia6t_expire -
+ time_second;
+
+ if (diff <= 0)
ltime = 0;
+ else if (diff >= ND6_INFINITE_LIFETIME)
+ ltime = ND6_INFINITE_LIFETIME;
+ else
+ ltime = htonl((u_int32_t)diff);
}
bcopy(<ime, cp, sizeof(u_int32_t));