Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Nov 2019 03:18:35 +0000 (UTC)
From:      Cy Schubert <cy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r355127 - stable/12/contrib/ntp/ntpd
Message-ID:  <201911270318.xAR3IZgb001545@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@gmail.com>,
  		dewayne@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 */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201911270318.xAR3IZgb001545>