diff options
author | Walter Lee <waltl@google.com> | 2017-11-16 17:03:25 +0000 |
---|---|---|
committer | Walter Lee <waltl@google.com> | 2017-11-16 17:03:25 +0000 |
commit | 871a521d0c3232a89e9f33e6d55f84154bbf9d39 (patch) | |
tree | 1ee32e34a843ea436058d4798a892886c32d6523 /lib | |
parent | 8edbfabe4d65e749511f8afbc80558059cf34dd7 (diff) |
[asan] Ensure that the minimum redzone is at least SHADOW_GRANULARITY
This is required by the Asan run-time.
Differential Revision: https://reviews.llvm.org/D39472
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@318422 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/asan/asan_activation.cc | 7 | ||||
-rw-r--r-- | lib/asan/asan_flags.cc | 3 |
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/asan/asan_activation.cc b/lib/asan/asan_activation.cc index 66eba9ce2..d642be934 100644 --- a/lib/asan/asan_activation.cc +++ b/lib/asan/asan_activation.cc @@ -16,8 +16,10 @@ #include "asan_allocator.h" #include "asan_flags.h" #include "asan_internal.h" +#include "asan_mapping.h" #include "asan_poisoning.h" #include "asan_stack.h" +#include "sanitizer_common/sanitizer_common.h" #include "sanitizer_common/sanitizer_flags.h" namespace __asan { @@ -110,8 +112,9 @@ void AsanDeactivate() { AllocatorOptions disabled = asan_deactivated_flags.allocator_options; disabled.quarantine_size_mb = 0; disabled.thread_local_quarantine_size_kb = 0; - disabled.min_redzone = 16; // Redzone must be at least 16 bytes long. - disabled.max_redzone = 16; + // Redzone must be at least Max(16, granularity) bytes long. + disabled.min_redzone = Max(16, (int)SHADOW_GRANULARITY); + disabled.max_redzone = disabled.min_redzone; disabled.alloc_dealloc_mismatch = false; disabled.may_return_null = true; ReInitializeAllocator(disabled); diff --git a/lib/asan/asan_flags.cc b/lib/asan/asan_flags.cc index d3efadc54..562168e6d 100644 --- a/lib/asan/asan_flags.cc +++ b/lib/asan/asan_flags.cc @@ -148,6 +148,9 @@ void InitializeFlags() { SanitizerToolName); Die(); } + // Ensure that redzone is at least SHADOW_GRANULARITY. + if (f->redzone < (int)SHADOW_GRANULARITY) + f->redzone = SHADOW_GRANULARITY; // Make "strict_init_order" imply "check_initialization_order". // TODO(samsonov): Use a single runtime flag for an init-order checker. if (f->strict_init_order) { |