diff options
author | Vitaly Buka <vitalybuka@google.com> | 2018-01-30 22:22:12 +0000 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2018-01-30 22:22:12 +0000 |
commit | f95854ec1ca9fce90edf26c5cffbcc59cd17b8eb (patch) | |
tree | f67ef8d46f339e13c265889ecef3802d3cf400f5 /lib/msan | |
parent | 7f6dcb2e695c194eb4f3ed961d7616283e1dfb76 (diff) |
[sanitizer] Add interceptors for readlinkat, name_to_handle_at, open_by_handle_at
Summary:
Also move existing readlink msan interceptor to sanitizer_common.
Fixes google/sanitizers#908
Patch by Oliver Chang
Reviewers: vitalybuka, eugenis
Reviewed By: vitalybuka
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D42630
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@323825 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan')
-rw-r--r-- | lib/msan/msan_interceptors.cc | 10 | ||||
-rw-r--r-- | lib/msan/tests/msan_test.cc | 7 |
2 files changed, 7 insertions, 10 deletions
diff --git a/lib/msan/msan_interceptors.cc b/lib/msan/msan_interceptors.cc index 02b41efda..1084fa8f6 100644 --- a/lib/msan/msan_interceptors.cc +++ b/lib/msan/msan_interceptors.cc @@ -138,15 +138,6 @@ INTERCEPTOR(SIZE_T, fread_unlocked, void *ptr, SIZE_T size, SIZE_T nmemb, #define MSAN_MAYBE_INTERCEPT_FREAD_UNLOCKED #endif -INTERCEPTOR(SSIZE_T, readlink, const char *path, char *buf, SIZE_T bufsiz) { - ENSURE_MSAN_INITED(); - CHECK_UNPOISONED_STRING(path, 0); - SSIZE_T res = REAL(readlink)(path, buf, bufsiz); - if (res > 0) - __msan_unpoison(buf, res); - return res; -} - #if !SANITIZER_NETBSD INTERCEPTOR(void *, mempcpy, void *dest, const void *src, SIZE_T n) { return (char *)__msan_memcpy(dest, src, n) + n; @@ -1587,7 +1578,6 @@ void InitializeInterceptors() { MSAN_MAYBE_INTERCEPT_MALLOC_STATS; INTERCEPT_FUNCTION(fread); MSAN_MAYBE_INTERCEPT_FREAD_UNLOCKED; - INTERCEPT_FUNCTION(readlink); INTERCEPT_FUNCTION(memccpy); MSAN_MAYBE_INTERCEPT_MEMPCPY; INTERCEPT_FUNCTION(bcopy); diff --git a/lib/msan/tests/msan_test.cc b/lib/msan/tests/msan_test.cc index 074a2f609..7a582c935 100644 --- a/lib/msan/tests/msan_test.cc +++ b/lib/msan/tests/msan_test.cc @@ -717,6 +717,13 @@ TEST(MemorySanitizer, readlink) { delete [] x; } +TEST(MemorySanitizer, readlinkat) { + char *x = new char[1000]; + readlinkat(AT_FDCWD, SYMLINK_TO_READ, x, 1000); + EXPECT_NOT_POISONED(x[0]); + delete[] x; +} + TEST(MemorySanitizer, stat) { struct stat* st = new struct stat; int res = stat(FILE_TO_READ, st); |