diff options
author | Viktor Kutuzov <vkutuzov@accesssoftek.com> | 2015-01-14 14:59:46 +0000 |
---|---|---|
committer | Viktor Kutuzov <vkutuzov@accesssoftek.com> | 2015-01-14 14:59:46 +0000 |
commit | ebd1d5bbdbf66799d0da03068af1649753cf5f27 (patch) | |
tree | 518933ff5f5fb3099a56588c2be42ce11effe414 | |
parent | 0f57ea6762e52aa65732ae8036409fbb0e467b26 (diff) | |
download | compiler-rt-ebd1d5bbdbf66799d0da03068af1649753cf5f27.tar.gz |
[Msan] Fix strlen() and strnlen() interceptors to work on FreeBSD
Differential Revision: http://reviews.llvm.org/D6928
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@225986 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/msan/msan_interceptors.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/msan/msan_interceptors.cc b/lib/msan/msan_interceptors.cc index ee3d5f432..d0e59d130 100644 --- a/lib/msan/msan_interceptors.cc +++ b/lib/msan/msan_interceptors.cc @@ -318,6 +318,8 @@ INTERCEPTOR(char *, stpcpy, char *dest, const char *src) { // NOLINT INTERCEPTOR(char *, strdup, char *src) { ENSURE_MSAN_INITED(); GET_STORE_STACK_TRACE; + // On FreeBSD strdup() leverages strlen(). + InterceptorScope interceptor_scope; SIZE_T n = REAL(strlen)(src); char *res = REAL(strdup)(src); CopyPoison(res, src, n + 1, &stack); @@ -341,6 +343,8 @@ INTERCEPTOR(char *, __strdup, char *src) { INTERCEPTOR(char *, strndup, char *src, SIZE_T n) { ENSURE_MSAN_INITED(); GET_STORE_STACK_TRACE; + // On FreeBSD strndup() leverages strnlen(). + InterceptorScope interceptor_scope; SIZE_T copy_size = REAL(strnlen)(src, n); char *res = REAL(strndup)(src, n); CopyPoison(res, src, copy_size, &stack); |