[compiler-rt] r208295 - [msan] Switch to common printf interceptors.
Evgeniy Stepanov
eugeni.stepanov at gmail.com
Thu May 8 02:51:00 PDT 2014
Author: eugenis
Date: Thu May 8 04:50:59 2014
New Revision: 208295
URL: http://llvm.org/viewvc/llvm-project?rev=208295&view=rev
Log:
[msan] Switch to common printf interceptors.
Format string parsing is disabled by default.
This is not expected to meaningfully change the tool behavior.
With this change, check_printf flag could be used to evaluate printf format
string parsing in MSan.
Modified:
compiler-rt/trunk/lib/msan/msan.cc
compiler-rt/trunk/lib/msan/msan_interceptors.cc
Modified: compiler-rt/trunk/lib/msan/msan.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan.cc?rev=208295&r1=208294&r2=208295&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/msan.cc (original)
+++ compiler-rt/trunk/lib/msan/msan.cc Thu May 8 04:50:59 2014
@@ -134,6 +134,8 @@ static void InitializeFlags(Flags *f, co
cf->external_symbolizer_path = GetEnv("MSAN_SYMBOLIZER_PATH");
cf->malloc_context_size = 20;
cf->handle_ioctl = true;
+ // FIXME: test and enable.
+ cf->check_printf = false;
internal_memset(f, 0, sizeof(*f));
f->poison_heap_with_zeroes = false;
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=208295&r1=208294&r2=208295&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Thu May 8 04:50:59 2014
@@ -378,44 +378,7 @@ INTERCEPTOR_STRTO_BASE_LOC(long long, st
INTERCEPTOR_STRTO_BASE_LOC(unsigned long, strtoul_l) // NOLINT
INTERCEPTOR_STRTO_BASE_LOC(unsigned long long, strtoull_l) // NOLINT
-INTERCEPTOR(int, vasprintf, char **strp, const char *format, va_list ap) {
- ENSURE_MSAN_INITED();
- int res = REAL(vasprintf)(strp, format, ap);
- if (res >= 0 && !__msan_has_dynamic_component()) {
- __msan_unpoison(strp, sizeof(*strp));
- __msan_unpoison(*strp, res + 1);
- }
- return res;
-}
-
-INTERCEPTOR(int, asprintf, char **strp, const char *format, ...) { // NOLINT
- ENSURE_MSAN_INITED();
- va_list ap;
- va_start(ap, format);
- int res = vasprintf(strp, format, ap); // NOLINT
- va_end(ap);
- return res;
-}
-
-INTERCEPTOR(int, vsnprintf, char *str, uptr size,
- const char *format, va_list ap) {
- ENSURE_MSAN_INITED();
- int res = REAL(vsnprintf)(str, size, format, ap);
- if (res >= 0 && !__msan_has_dynamic_component()) {
- __msan_unpoison(str, res + 1);
- }
- return res;
-}
-
-INTERCEPTOR(int, vsprintf, char *str, const char *format, va_list ap) {
- ENSURE_MSAN_INITED();
- int res = REAL(vsprintf)(str, format, ap);
- if (res >= 0 && !__msan_has_dynamic_component()) {
- __msan_unpoison(str, res + 1);
- }
- return res;
-}
-
+// FIXME: support *wprintf in common format interceptors.
INTERCEPTOR(int, vswprintf, void *str, uptr size, void *format, va_list ap) {
ENSURE_MSAN_INITED();
int res = REAL(vswprintf)(str, size, format, ap);
@@ -425,24 +388,6 @@ INTERCEPTOR(int, vswprintf, void *str, u
return res;
}
-INTERCEPTOR(int, sprintf, char *str, const char *format, ...) { // NOLINT
- ENSURE_MSAN_INITED();
- va_list ap;
- va_start(ap, format);
- int res = vsprintf(str, format, ap); // NOLINT
- va_end(ap);
- return res;
-}
-
-INTERCEPTOR(int, snprintf, char *str, uptr size, const char *format, ...) {
- ENSURE_MSAN_INITED();
- va_list ap;
- va_start(ap, format);
- int res = vsnprintf(str, size, format, ap);
- va_end(ap);
- return res;
-}
-
INTERCEPTOR(int, swprintf, void *str, uptr size, void *format, ...) {
ENSURE_MSAN_INITED();
va_list ap;
@@ -1270,8 +1215,6 @@ int OnExit() {
} while (false) // FIXME
#define COMMON_INTERCEPTOR_BLOCK_REAL(name) REAL(name)
#define COMMON_INTERCEPTOR_ON_EXIT(ctx) OnExit()
-// FIXME: update Msan to use common printf interceptors
-#define SANITIZER_INTERCEPT_PRINTF 0
#include "sanitizer_common/sanitizer_common_interceptors.inc"
#define COMMON_SYSCALL_PRE_READ_RANGE(p, s) CHECK_UNPOISONED(p, s)
@@ -1552,13 +1495,7 @@ void InitializeInterceptors() {
INTERCEPT_FUNCTION(strtoll_l);
INTERCEPT_FUNCTION(strtoul_l);
INTERCEPT_FUNCTION(strtoull_l);
- INTERCEPT_FUNCTION(vasprintf);
- INTERCEPT_FUNCTION(asprintf);
- INTERCEPT_FUNCTION(vsprintf);
- INTERCEPT_FUNCTION(vsnprintf);
INTERCEPT_FUNCTION(vswprintf);
- INTERCEPT_FUNCTION(sprintf); // NOLINT
- INTERCEPT_FUNCTION(snprintf);
INTERCEPT_FUNCTION(swprintf);
INTERCEPT_FUNCTION(strftime);
INTERCEPT_FUNCTION(strftime_l);
More information about the llvm-commits
mailing list