23334383 ntpd stuck in SIGBUS loop
authorBrian Utterback <brian.utterback@oracle.com>
Tue, 24 May 2016 06:37:50 -0700
changeset 6057 9c3b25fa4b99
parent 6053 c489fdf879c4
child 6058 dd8b0bdd3859
23334383 ntpd stuck in SIGBUS loop
components/ntp/patches/45-alignts.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/ntp/patches/45-alignts.patch	Tue May 24 06:37:50 2016 -0700
@@ -0,0 +1,28 @@
+This problem has been reported to the NTP community as NTP bug 3058 -
+http://bugzilla.ntp.org/show_bug.cgi?id=3058 
+"fetch_timestamp fails to account for alignment."
+
+This patch may be removed when upgrading to a version of NTP with bug 3058 
+fixed.
+
+--- ntpd/ntp_io.c
++++ ntpd/ntp_io.c
+@@ -3289,7 +3289,8 @@ fetch_timestamp(
+ 	struct timespec *	tsp;
+ #endif
+ #ifdef HAVE_TIMESTAMP
+-	struct timeval *	tvp;
++	struct timeval 		tvhold;
++	struct timeval *	 tvp = &tvhold;
+ #endif
+ 	unsigned long		ticks;
+ 	double			fuzz;
+@@ -3349,7 +3350,7 @@ fetch_timestamp(
+ #endif	/* HAVE_TIMESTAMPNS */
+ #ifdef HAVE_TIMESTAMP
+ 			case SCM_TIMESTAMP:
+-				tvp = (struct timeval *)CMSG_DATA(cmsghdr);
++				memcpy(&tvhold, CMSG_DATA(cmsghdr), sizeof(tvhold));
+ 				if (sys_tick > measured_tick &&
+ 				    sys_tick > 1e-6) {
+ 					ticks = (unsigned long)((tvp->tv_usec * 1e-6) /