svn commit: r354733 - head/contrib/ntp/ntpd
Cy Schubert
cy at FreeBSD.org
Fri Nov 15 16:34:36 UTC 2019
Author: cy
Date: Fri Nov 15 16:34:35 2019
New Revision: 354733
URL: https://svnweb.freebsd.org/changeset/base/354733
Log:
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)
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D22358
Modified:
head/contrib/ntp/ntpd/ntpd.c
Modified: head/contrib/ntp/ntpd/ntpd.c
==============================================================================
--- head/contrib/ntp/ntpd/ntpd.c Fri Nov 15 16:21:46 2019 (r354732)
+++ head/contrib/ntp/ntpd/ntpd.c Fri Nov 15 16:34:35 2019 (r354733)
@@ -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