diff options
author | Kostya Serebryany <kcc@google.com> | 2017-07-14 00:06:27 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2017-07-14 00:06:27 +0000 |
commit | f64b8487f98125ec9c878656ef12081b67f04bb0 (patch) | |
tree | 0a527e4cfc8da4c7fa98f75b676fb3a0b4d4676d /llvm/lib/Fuzzer/FuzzerTracePC.cpp | |
parent | dc2890a88722c3b2dab69dc0b7c8cbbfef472c7d (diff) | |
download | bcm5719-llvm-f64b8487f98125ec9c878656ef12081b67f04bb0.tar.gz bcm5719-llvm-f64b8487f98125ec9c878656ef12081b67f04bb0.zip |
[libFuzzer] simplify the handling of memmem/strstr
llvm-svn: 307977
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerTracePC.cpp')
-rw-r--r-- | llvm/lib/Fuzzer/FuzzerTracePC.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerTracePC.cpp b/llvm/lib/Fuzzer/FuzzerTracePC.cpp index 909227ea7e0..ced0a213334 100644 --- a/llvm/lib/Fuzzer/FuzzerTracePC.cpp +++ b/llvm/lib/Fuzzer/FuzzerTracePC.cpp @@ -37,6 +37,8 @@ namespace fuzzer { TracePC TPC; +int ScopedDoingMyOwnMemOrStr::DoingMyOwnMemOrStr; + uint8_t *TracePC::Counters() const { return __sancov_trace_pc_guard_8bit_counters; } @@ -475,4 +477,25 @@ void __sanitizer_weak_hook_strcasecmp(void *called_pc, const char *s1, if (fuzzer::ScopedDoingMyOwnMemOrStr::DoingMyOwnMemOrStr) return; return __sanitizer_weak_hook_strcmp(called_pc, s1, s2, result); } + +ATTRIBUTE_INTERFACE ATTRIBUTE_NO_SANITIZE_MEMORY +void __sanitizer_weak_hook_strstr(void *called_pc, const char *s1, + const char *s2, char *result) { + if (fuzzer::ScopedDoingMyOwnMemOrStr::DoingMyOwnMemOrStr) return; + fuzzer::TPC.MMT.Add(reinterpret_cast<const uint8_t *>(s2), strlen(s2)); +} + +ATTRIBUTE_INTERFACE ATTRIBUTE_NO_SANITIZE_MEMORY +void __sanitizer_weak_hook_strcasestr(void *called_pc, const char *s1, + const char *s2, char *result) { + if (fuzzer::ScopedDoingMyOwnMemOrStr::DoingMyOwnMemOrStr) return; + fuzzer::TPC.MMT.Add(reinterpret_cast<const uint8_t *>(s2), strlen(s2)); +} + +ATTRIBUTE_INTERFACE ATTRIBUTE_NO_SANITIZE_MEMORY +void __sanitizer_weak_hook_memmem(void *called_pc, const void *s1, size_t len1, + const void *s2, size_t len2, void *result) { + if (fuzzer::ScopedDoingMyOwnMemOrStr::DoingMyOwnMemOrStr) return; + fuzzer::TPC.MMT.Add(reinterpret_cast<const uint8_t *>(s2), len2); +} } // extern "C" |