Skip to content

Commit c793782

Browse files
authored
Revert "[compiler-rt][asan] Add wcscpy/wcsncpy; enable wcscat/wcsncat on Windows" (#162021)
Reverts #160493 due to buildbot failures e.g., #160493 (comment) The fix-forward (#161624) still had failures on Darwin, and was reverted in #162001 i.e., this pull request completes the revert to green for this patch stack.
1 parent 3ae7af7 commit c793782

File tree

8 files changed

+4
-150
lines changed

8 files changed

+4
-150
lines changed

compiler-rt/lib/asan/asan_interceptors.cpp

Lines changed: 3 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,13 @@ namespace __asan {
5858

5959
static inline uptr MaybeRealStrnlen(const char *s, uptr maxlen) {
6060
#if SANITIZER_INTERCEPT_STRNLEN
61-
if (REAL(strnlen))
61+
if (REAL(strnlen)) {
6262
return REAL(strnlen)(s, maxlen);
63-
# endif
63+
}
64+
#endif
6465
return internal_strnlen(s, maxlen);
6566
}
6667

67-
static inline uptr MaybeRealWcsnlen(const wchar_t* s, uptr maxlen) {
68-
# if SANITIZER_INTERCEPT_WCSNLEN
69-
if (REAL(wcsnlen))
70-
return REAL(wcsnlen)(s, maxlen);
71-
# endif
72-
return internal_wcsnlen(s, maxlen);
73-
}
74-
7568
void SetThreadName(const char *name) {
7669
AsanThread *t = GetCurrentThread();
7770
if (t)
@@ -577,20 +570,6 @@ INTERCEPTOR(char *, strcpy, char *to, const char *from) {
577570
return REAL(strcpy)(to, from);
578571
}
579572

580-
INTERCEPTOR(wchar_t*, wcscpy, wchar_t* to, const wchar_t* from) {
581-
void* ctx;
582-
ASAN_INTERCEPTOR_ENTER(ctx, wcscpy);
583-
if (!TryAsanInitFromRtl())
584-
return REAL(wcscpy)(to, from);
585-
if (flags()->replace_str) {
586-
uptr size = (internal_wcslen(from) + 1) * sizeof(wchar_t);
587-
CHECK_RANGES_OVERLAP("wcscpy", to, size, from, size);
588-
ASAN_READ_RANGE(ctx, from, size);
589-
ASAN_WRITE_RANGE(ctx, to, size);
590-
}
591-
return REAL(wcscpy)(to, from);
592-
}
593-
594573
// Windows doesn't always define the strdup identifier,
595574
// and when it does it's a macro defined to either _strdup
596575
// or _strdup_dbg, _strdup_dbg ends up calling _strdup, so
@@ -654,20 +633,6 @@ INTERCEPTOR(char*, strncpy, char *to, const char *from, usize size) {
654633
return REAL(strncpy)(to, from, size);
655634
}
656635

657-
INTERCEPTOR(wchar_t*, wcsncpy, wchar_t* to, const wchar_t* from, uptr size) {
658-
void* ctx;
659-
ASAN_INTERCEPTOR_ENTER(ctx, wcsncpy);
660-
AsanInitFromRtl();
661-
if (flags()->replace_str) {
662-
uptr from_size =
663-
Min(size, MaybeRealWcsnlen(from, size) + 1) * sizeof(wchar_t);
664-
CHECK_RANGES_OVERLAP("wcsncpy", to, from_size, from, from_size);
665-
ASAN_READ_RANGE(ctx, from, from_size);
666-
ASAN_WRITE_RANGE(ctx, to, size * sizeof(wchar_t));
667-
}
668-
return REAL(wcsncpy)(to, from, size);
669-
}
670-
671636
template <typename Fn>
672637
static ALWAYS_INLINE auto StrtolImpl(void *ctx, Fn real, const char *nptr,
673638
char **endptr, int base)
@@ -844,11 +809,6 @@ void InitializeAsanInterceptors() {
844809
ASAN_INTERCEPT_FUNC(strncat);
845810
ASAN_INTERCEPT_FUNC(strncpy);
846811
ASAN_INTERCEPT_FUNC(strdup);
847-
848-
// Intercept wcs* functions.
849-
ASAN_INTERCEPT_FUNC(wcscpy);
850-
ASAN_INTERCEPT_FUNC(wcsncpy);
851-
852812
# if ASAN_INTERCEPT___STRDUP
853813
ASAN_INTERCEPT_FUNC(__strdup);
854814
#endif

compiler-rt/lib/asan/asan_interceptors.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,6 @@ DECLARE_REAL(char*, strchr, const char *str, int c)
129129
DECLARE_REAL(SIZE_T, strlen, const char *s)
130130
DECLARE_REAL(char*, strncpy, char *to, const char *from, SIZE_T size)
131131
DECLARE_REAL(SIZE_T, strnlen, const char *s, SIZE_T maxlen)
132-
DECLARE_REAL(SIZE_T, wcsnlen, const wchar_t* s, SIZE_T maxlen)
133132
DECLARE_REAL(char*, strstr, const char *s1, const char *s2)
134133

135134
# if !SANITIZER_APPLE

compiler-rt/lib/asan/asan_win_static_runtime_thunk.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,6 @@ INTERCEPT_LIBRARY_FUNCTION_ASAN(strpbrk);
6363
INTERCEPT_LIBRARY_FUNCTION_ASAN(strspn);
6464
INTERCEPT_LIBRARY_FUNCTION_ASAN(strstr);
6565
INTERCEPT_LIBRARY_FUNCTION_ASAN(strtok);
66-
INTERCEPT_LIBRARY_FUNCTION_ASAN(wcscat);
67-
INTERCEPT_LIBRARY_FUNCTION_ASAN(wcscpy);
68-
INTERCEPT_LIBRARY_FUNCTION_ASAN(wcsncat);
69-
INTERCEPT_LIBRARY_FUNCTION_ASAN(wcsncpy);
7066
INTERCEPT_LIBRARY_FUNCTION_ASAN(wcslen);
7167
INTERCEPT_LIBRARY_FUNCTION_ASAN(wcsnlen);
7268

compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
551551
#define SANITIZER_INTERCEPT_MALLOC_USABLE_SIZE (!SI_MAC && !SI_NETBSD)
552552
#define SANITIZER_INTERCEPT_MCHECK_MPROBE SI_LINUX_NOT_ANDROID
553553
#define SANITIZER_INTERCEPT_WCSLEN 1
554-
#define SANITIZER_INTERCEPT_WCSCAT (SI_POSIX || SI_WINDOWS)
554+
#define SANITIZER_INTERCEPT_WCSCAT SI_POSIX
555555
#define SANITIZER_INTERCEPT_WCSDUP SI_POSIX
556556
#define SANITIZER_INTERCEPT_SIGNAL_AND_SIGACTION (!SI_WINDOWS && SI_NOT_FUCHSIA)
557557
#define SANITIZER_INTERCEPT_BSD_SIGNAL SI_ANDROID

compiler-rt/test/asan/TestCases/wcscat.cpp

Lines changed: 0 additions & 26 deletions
This file was deleted.

compiler-rt/test/asan/TestCases/wcscpy.cpp

Lines changed: 0 additions & 23 deletions
This file was deleted.

compiler-rt/test/asan/TestCases/wcsncat.cpp

Lines changed: 0 additions & 27 deletions
This file was deleted.

compiler-rt/test/asan/TestCases/wcsncpy.cpp

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)