svn commit: r355127 - stable/12/contrib/ntp/ntpd

Cy Schubert cy at FreeBSD.org
Wed Nov 27 03:18:36 UTC 2019


Author: cy
Date: Wed Nov 27 03:18:35 2019
New Revision: 355127
URL: https://svnweb.freebsd.org/changeset/base/355127

Log:
  MFC rr354733:
  Disable ntpd stack gap. When ASLR with STACK GAP != 0 ntpd suffers SIGSEGV.
  
  PR:		241421, 241960
  Reported by:	Vladimir Zakharov <zakharov.vv at gmail.com>,
  		dewayne at heuristicsystems.com.au
  Reviewed by:	kib, imp (previous version), ian (suggestion)
  Differential Revision:	https://reviews.freebsd.org/D22358

Modified:
  stable/12/contrib/ntp/ntpd/ntpd.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/contrib/ntp/ntpd/ntpd.c
==============================================================================
--- stable/12/contrib/ntp/ntpd/ntpd.c	Wed Nov 27 01:54:39 2019	(r355126)
+++ stable/12/contrib/ntp/ntpd/ntpd.c	Wed Nov 27 03:18:35 2019	(r355127)
@@ -138,6 +138,17 @@
 # include <seccomp.h>
 #endif /* LIBSECCOMP and KERN_SECCOMP */
 
+#ifdef __FreeBSD__
+#include <sys/procctl.h>
+#ifndef PROC_STACKGAP_CTL
+/*
+ * Even if we compile on an older system we can still run on a newer one.
+ */
+#define	PROC_STACKGAP_CTL	17
+#define	PROC_STACKGAP_DISABLE	0x0002
+#endif
+#endif
+
 #ifdef HAVE_DNSREGISTRATION
 # include <dns_sd.h>
 DNSServiceRef mdns;
@@ -402,6 +413,18 @@ main(
 	char *argv[]
 	)
 {
+#ifdef __FreeBSD__
+	{
+		/*
+		 * We Must disable ASLR stack gap on FreeBSD to avoid a
+		 * segfault. See PR/241421 and PR/241960.
+		 */
+		int aslr_var = PROC_STACKGAP_DISABLE;
+
+		pid_t my_pid = getpid();
+		procctl(P_PID, my_pid, PROC_STACKGAP_CTL, &aslr_var); 
+	}
+#endif
 	return ntpdmain(argc, argv);
 }
 #endif /* !SYS_WINNT */


More information about the svn-src-all mailing list