forked from OSchip/llvm-project
Revert "Mmap interceptor new option, Write Exec runtime detector"
Breaks Android bot. This reverts commit r327747. llvm-svn: 327762
This commit is contained in:
parent
196a9fab82
commit
ec6327bab8
|
@ -378,8 +378,6 @@ void ReportErrorSummary(const char *error_type, const AddressInfo &info,
|
||||||
void ReportErrorSummary(const char *error_type, const StackTrace *trace,
|
void ReportErrorSummary(const char *error_type, const StackTrace *trace,
|
||||||
const char *alt_tool_name = nullptr);
|
const char *alt_tool_name = nullptr);
|
||||||
|
|
||||||
void ReportMmapWriteExec();
|
|
||||||
|
|
||||||
// Math
|
// Math
|
||||||
#if SANITIZER_WINDOWS && !defined(__clang__) && !defined(__GNUC__)
|
#if SANITIZER_WINDOWS && !defined(__clang__) && !defined(__GNUC__)
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
|
@ -6887,8 +6887,6 @@ INTERCEPTOR(SIZE_T, strlcat, char *dst, char *src, SIZE_T size) {
|
||||||
INTERCEPTOR(void *, mmap, void *addr, SIZE_T sz, int prot, int flags, int fd,
|
INTERCEPTOR(void *, mmap, void *addr, SIZE_T sz, int prot, int flags, int fd,
|
||||||
OFF_T off) {
|
OFF_T off) {
|
||||||
void *ctx;
|
void *ctx;
|
||||||
if (common_flags()->detect_write_exec)
|
|
||||||
ReportMmapWriteExec();
|
|
||||||
if (COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED)
|
if (COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED)
|
||||||
return (void *)internal_mmap(addr, sz, prot, flags, fd, off);
|
return (void *)internal_mmap(addr, sz, prot, flags, fd, off);
|
||||||
COMMON_INTERCEPTOR_ENTER(ctx, mmap, addr, sz, prot, flags, fd, off);
|
COMMON_INTERCEPTOR_ENTER(ctx, mmap, addr, sz, prot, flags, fd, off);
|
||||||
|
@ -6903,8 +6901,6 @@ INTERCEPTOR(void *, mmap, void *addr, SIZE_T sz, int prot, int flags, int fd,
|
||||||
INTERCEPTOR(void *, mmap64, void *addr, SIZE_T sz, int prot, int flags, int fd,
|
INTERCEPTOR(void *, mmap64, void *addr, SIZE_T sz, int prot, int flags, int fd,
|
||||||
OFF64_T off) {
|
OFF64_T off) {
|
||||||
void *ctx;
|
void *ctx;
|
||||||
if (common_flags()->detect_write_exec)
|
|
||||||
ReportMmapWriteExec();
|
|
||||||
if (COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED)
|
if (COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED)
|
||||||
return (void *)internal_mmap(addr, sz, prot, flags, fd, off);
|
return (void *)internal_mmap(addr, sz, prot, flags, fd, off);
|
||||||
COMMON_INTERCEPTOR_ENTER(ctx, mmap64, addr, sz, prot, flags, fd, off);
|
COMMON_INTERCEPTOR_ENTER(ctx, mmap64, addr, sz, prot, flags, fd, off);
|
||||||
|
|
|
@ -81,32 +81,6 @@ void ReportErrorSummary(const char *error_type, const StackTrace *stack,
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReportMmapWriteExec() {
|
|
||||||
#if !SANITIZER_GO
|
|
||||||
ScopedErrorReportLock l;
|
|
||||||
SanitizerCommonDecorator d;
|
|
||||||
|
|
||||||
InternalScopedBuffer<BufferedStackTrace> stack_buffer(1);
|
|
||||||
BufferedStackTrace *stack = stack_buffer.data();
|
|
||||||
stack->Reset();
|
|
||||||
uptr top = 0;
|
|
||||||
uptr bottom = 0;
|
|
||||||
GET_CALLER_PC_BP_SP;
|
|
||||||
(void)sp;
|
|
||||||
bool fast = common_flags()->fast_unwind_on_fatal;
|
|
||||||
if (fast)
|
|
||||||
GetThreadStackTopAndBottom(false, &top, &bottom);
|
|
||||||
stack->Unwind(kStackTraceMax, pc, bp, nullptr, top, bottom, fast);
|
|
||||||
|
|
||||||
Printf("%s", d.Warning());
|
|
||||||
Report("WARNING: %s: writable-executable page usage\n", SanitizerToolName);
|
|
||||||
Printf("%s", d.Default());
|
|
||||||
|
|
||||||
stack->Print();
|
|
||||||
ReportErrorSummary("w-and-x-usage", stack);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void (*SoftRssLimitExceededCallback)(bool exceeded);
|
static void (*SoftRssLimitExceededCallback)(bool exceeded);
|
||||||
void SetSoftRssLimitExceededCallback(void (*Callback)(bool exceeded)) {
|
void SetSoftRssLimitExceededCallback(void (*Callback)(bool exceeded)) {
|
||||||
CHECK_EQ(SoftRssLimitExceededCallback, nullptr);
|
CHECK_EQ(SoftRssLimitExceededCallback, nullptr);
|
||||||
|
|
|
@ -240,6 +240,3 @@ COMMON_FLAG(bool, dump_instruction_bytes, false,
|
||||||
COMMON_FLAG(bool, dump_registers, true,
|
COMMON_FLAG(bool, dump_registers, true,
|
||||||
"If true, dump values of CPU registers when SEGV happens. Only "
|
"If true, dump values of CPU registers when SEGV happens. Only "
|
||||||
"available on OS X for now.")
|
"available on OS X for now.")
|
||||||
COMMON_FLAG(bool, detect_write_exec, false,
|
|
||||||
"If true, triggers warning when writable-executable pages requests "
|
|
||||||
"are being made")
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
// RUN: %clangxx %s -o %t
|
|
||||||
// RUN: %env_tool_opts=detect_write_exec=1 %run %t 2>&1 | FileCheck %s
|
|
||||||
// ubsan and lsan do not install mmap interceptors
|
|
||||||
// UNSUPPORTED: ubsan, lsan
|
|
||||||
|
|
||||||
#include <sys/mman.h>
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
char *p = (char *)mmap(0, 1024, PROT_READ | PROT_WRITE | PROT_EXEC,
|
|
||||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
|
||||||
// CHECK: WARNING: {{.*}}Sanitizer: writable-executable page usage
|
|
||||||
}
|
|
Loading…
Reference in New Issue