summaryrefslogtreecommitdiff
path: root/lib/msan
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2018-01-30 22:22:12 +0000
committerVitaly Buka <vitalybuka@google.com>2018-01-30 22:22:12 +0000
commitf95854ec1ca9fce90edf26c5cffbcc59cd17b8eb (patch)
treef67ef8d46f339e13c265889ecef3802d3cf400f5 /lib/msan
parent7f6dcb2e695c194eb4f3ed961d7616283e1dfb76 (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.cc10
-rw-r--r--lib/msan/tests/msan_test.cc7
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);