]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
[Bug 3627] SIGSEGV on FreeBSD-12 with stack limit and stack gap
authorJuergen Perlinger <perlinger@ntp.org>
Mon, 18 Nov 2019 06:04:58 +0000 (06:04 +0000)
committerJuergen Perlinger <perlinger@ntp.org>
Mon, 18 Nov 2019 06:04:58 +0000 (06:04 +0000)
bk: 5dd2348a1iVN4sHfn4J1yan-8Mre_Q

ChangeLog
ntpd/ntpd.c

index 56a2d6023b6f27bf8785fe23f6ea6b95ca07cc42..573dd533f3a081229b1ad62b822e0b6a6cb08c36 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@
 
 * [Sec 3610] process_control() should bail earlier on short packets. stenn@
   - Reported by Philippe Antoine
+* [Bug 3627] SIGSEGV on FreeBSD-12 with stack limit and stack gap <perlinger@ntp.org>
+  - integrated patch by Cy Schubert
 * [Bug 3620] memory leak in ntpq sysinfo <perlinger@ntp.org>
   - applied patch by Gerry Garvey
 * [Bug 3619] Honour drefid setting in cooked mode and sysinfo <perlinger@ntp.org>
index 86c608fbdecd6239e1f18bf94c8a0bcc03535b98..7e050faad87442491fac58388a227730931a9524 100644 (file)
 # 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;
@@ -427,6 +438,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 */