diff options
Diffstat (limited to 'compiler-rt/lib/hwasan/hwasan_thread.cpp')
-rw-r--r-- | compiler-rt/lib/hwasan/hwasan_thread.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler-rt/lib/hwasan/hwasan_thread.cpp b/compiler-rt/lib/hwasan/hwasan_thread.cpp index 46dcddd4288..cabf614c005 100644 --- a/compiler-rt/lib/hwasan/hwasan_thread.cpp +++ b/compiler-rt/lib/hwasan/hwasan_thread.cpp @@ -27,6 +27,11 @@ static u32 RandomSeed() { void Thread::InitRandomState() { random_state_ = flags()->random_tags ? RandomSeed() : unique_id_; + + // Push a random number of zeros onto the ring buffer so that the first stack + // tag base will be random. + for (tag_t i = 0, e = GenerateRandomTag(); i != e; ++i) + stack_allocations_->push(0); } void Thread::Init(uptr stack_buffer_start, uptr stack_buffer_size) { |