compiler-rt: re-exec with ASLR disabled when necessary
Some sanitizers (at least msan) currently require ASLR to be disabled. When we detect that ASLR is enabled, re-exec with it disabled rather than exiting with an error. See LLVM GitHub issue 53256 for more detail: https://github.com/llvm/llvm-project/issues/53256 No objection: dim MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D33934
This commit is contained in:
@@ -2197,8 +2197,11 @@ void CheckASLR() {
|
|||||||
}
|
}
|
||||||
if ((aslr_status & PROC_ASLR_ACTIVE) != 0) {
|
if ((aslr_status & PROC_ASLR_ACTIVE) != 0) {
|
||||||
Printf("This sanitizer is not compatible with enabled ASLR "
|
Printf("This sanitizer is not compatible with enabled ASLR "
|
||||||
"and binaries compiled with PIE\n");
|
"and binaries compiled with PIE\n"
|
||||||
Die();
|
"ASLR will be disabled and the program re-executed.\n");
|
||||||
|
int aslr_ctl = PROC_ASLR_FORCE_DISABLE;
|
||||||
|
CHECK_NE(procctl(P_PID, 0, PROC_ASLR_CTL, &aslr_ctl), -1);
|
||||||
|
ReExec();
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
// Do nothing
|
// Do nothing
|
||||||
|
|||||||
Reference in New Issue
Block a user