[compiler-rt] r201397 - [msan] Replicate mmap-below-shadow check in mmap64 interceptor.
Evgeniy Stepanov
eugeni.stepanov at gmail.com
Fri Feb 14 01:49:29 PST 2014
Author: eugenis
Date: Fri Feb 14 03:49:29 2014
New Revision: 201397
URL: http://llvm.org/viewvc/llvm-project?rev=201397&view=rev
Log:
[msan] Replicate mmap-below-shadow check in mmap64 interceptor.
Modified:
compiler-rt/trunk/lib/msan/lit_tests/mmap_below_shadow.cc
compiler-rt/trunk/lib/msan/msan_interceptors.cc
Modified: compiler-rt/trunk/lib/msan/lit_tests/mmap_below_shadow.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/lit_tests/mmap_below_shadow.cc?rev=201397&r1=201396&r2=201397&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/lit_tests/mmap_below_shadow.cc (original)
+++ compiler-rt/trunk/lib/msan/lit_tests/mmap_below_shadow.cc Fri Feb 14 03:49:29 2014
@@ -5,6 +5,8 @@
// RUN: %clangxx_msan -m64 -O0 -DFIXED=0 %s -o %t && %t
// RUN: %clangxx_msan -m64 -O0 -DFIXED=1 %s -o %t && %t
+// RUN: %clangxx_msan -m64 -O0 -DFIXED=0 -D_FILE_OFFSET_BITS=64 %s -o %t && %t
+// RUN: %clangxx_msan -m64 -O0 -DFIXED=1 -D_FILE_OFFSET_BITS=64 %s -o %t && %t
#include <assert.h>
#include <errno.h>
Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=201397&r1=201396&r2=201397&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Fri Feb 14 03:49:29 2014
@@ -814,6 +814,14 @@ INTERCEPTOR(void *, mmap, void *addr, SI
INTERCEPTOR(void *, mmap64, void *addr, SIZE_T length, int prot, int flags,
int fd, OFF64_T offset) {
ENSURE_MSAN_INITED();
+ if (addr && !MEM_IS_APP(addr)) {
+ if (flags & map_fixed) {
+ *__errno_location() = errno_EINVAL;
+ return (void *)-1;
+ } else {
+ addr = 0;
+ }
+ }
void *res = REAL(mmap64)(addr, length, prot, flags, fd, offset);
if (res != (void*)-1)
__msan_unpoison(res, RoundUpTo(length, GetPageSize()));
More information about the llvm-commits
mailing list