diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2012-12-26 06:37:23 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2012-12-26 06:37:23 +0000 |
| commit | 794a73124bd4f831d6c7e235f4630bb094108e7c (patch) | |
| tree | 3ceb0851a3bf4fdf359bd6823c49b4f09c10171e /compiler-rt/lib/msan/msan_linux.cc | |
| parent | a11cd57a7810257a4d92cc9bf767ab2ca1e0177b (diff) | |
| download | bcm5719-llvm-794a73124bd4f831d6c7e235f4630bb094108e7c.tar.gz bcm5719-llvm-794a73124bd4f831d6c7e235f4630bb094108e7c.zip | |
[msan] Check for conflicting memory mappings.
Check for conflicting memory mappings before attempting to map shadow.
Helps avoid segfault on Linux with disabled ASLR.
llvm-svn: 171100
Diffstat (limited to 'compiler-rt/lib/msan/msan_linux.cc')
| -rw-r--r-- | compiler-rt/lib/msan/msan_linux.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler-rt/lib/msan/msan_linux.cc b/compiler-rt/lib/msan/msan_linux.cc index aea29453c32..b51f6363310 100644 --- a/compiler-rt/lib/msan/msan_linux.cc +++ b/compiler-rt/lib/msan/msan_linux.cc @@ -51,6 +51,12 @@ bool InitShadow(bool prot1, bool prot2, bool map_shadow, bool init_origins) { Printf("Bad1 : %p %p\n", kBad1Beg, kBad1End); } + if (!MemoryRangeIsAvailable(kShadowBeg, + init_origins ? kOriginsEnd : kShadowEnd)) { + Printf("FATAL: Shadow memory range is not available.\n"); + return false; + } + if (prot1 && !Mprotect(kBad1Beg, kBad1End - kBad1Beg)) return false; if (prot2 && !Mprotect(kBad2Beg, kBad2End - kBad2Beg)) |

