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) MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D22358
This commit is contained in:
parent
299cb52a80
commit
5526318062
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=354733
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user