From 30e4f8edf32d9c5af7d28cc891f694744e8aa121 Mon Sep 17 00:00:00 2001 From: Maosu Zhao Date: Thu, 16 Oct 2025 15:02:00 +0800 Subject: [PATCH] [compiler-rt][asan][test] Make wchar tests more robust The stack buffer which is used to trigger out of bounds issue doesn't have obervable side effects, so it can easily be optimized by compiler as dead code. Signed-off-by: Maosu Zhao --- compiler-rt/test/asan/TestCases/wcscat.cpp | 6 ++++-- compiler-rt/test/asan/TestCases/wcscpy.cpp | 6 ++++-- compiler-rt/test/asan/TestCases/wcsncat.cpp | 6 ++++-- compiler-rt/test/asan/TestCases/wcsncpy.cpp | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/compiler-rt/test/asan/TestCases/wcscat.cpp b/compiler-rt/test/asan/TestCases/wcscat.cpp index fd0b5a4310351..beab1dc52e437 100644 --- a/compiler-rt/test/asan/TestCases/wcscat.cpp +++ b/compiler-rt/test/asan/TestCases/wcscat.cpp @@ -9,11 +9,13 @@ int main() { const wchar_t *start = L"X means "; const wchar_t *append = L"dog"; - wchar_t goodDst[12]; + wchar_t goodArray[12]; + wchar_t *volatile goodDst = goodArray; wcscpy(goodDst, start); wcscat(goodDst, append); - wchar_t badDst[9]; + wchar_t badArray[9]; + wchar_t *volatile badDst = badArray; wcscpy(badDst, start); fprintf(stderr, "Good so far.\n"); // CHECK-DAG: Good so far. diff --git a/compiler-rt/test/asan/TestCases/wcscpy.cpp b/compiler-rt/test/asan/TestCases/wcscpy.cpp index 8133a588cb071..2b828035cb498 100644 --- a/compiler-rt/test/asan/TestCases/wcscpy.cpp +++ b/compiler-rt/test/asan/TestCases/wcscpy.cpp @@ -8,10 +8,12 @@ int main() { const wchar_t *src = L"X means dog"; - wchar_t goodDst[12]; + wchar_t goodArray[12]; + wchar_t *volatile goodDst = goodArray; wcscpy(goodDst, src); - wchar_t badDst[7]; + wchar_t badArray[7]; + wchar_t *volatile badDst = badArray; fprintf(stderr, "Good so far.\n"); // CHECK-DAG: Good so far. fflush(stderr); diff --git a/compiler-rt/test/asan/TestCases/wcsncat.cpp b/compiler-rt/test/asan/TestCases/wcsncat.cpp index 365e732e2d051..04cdcf290ffed 100644 --- a/compiler-rt/test/asan/TestCases/wcsncat.cpp +++ b/compiler-rt/test/asan/TestCases/wcsncat.cpp @@ -9,11 +9,13 @@ int main() { const wchar_t *start = L"X means "; const wchar_t *append = L"dog"; - wchar_t goodDst[15]; + wchar_t goodArray[15]; + wchar_t *volatile goodDst = goodArray; wcscpy(goodDst, start); wcsncat(goodDst, append, 5); - wchar_t badDst[11]; + wchar_t badArray[11]; + wchar_t *volatile badDst = badArray; wcscpy(badDst, start); wcsncat(badDst, append, 1); fprintf(stderr, "Good so far.\n"); diff --git a/compiler-rt/test/asan/TestCases/wcsncpy.cpp b/compiler-rt/test/asan/TestCases/wcsncpy.cpp index 485ddc4804dcd..9e11b55fe4ec9 100644 --- a/compiler-rt/test/asan/TestCases/wcsncpy.cpp +++ b/compiler-rt/test/asan/TestCases/wcsncpy.cpp @@ -8,10 +8,12 @@ int main() { const wchar_t *src = L"X means dog"; - wchar_t goodDst[12]; + wchar_t goodArray[12]; + wchar_t *volatile goodDst = goodArray; wcsncpy(goodDst, src, 12); - wchar_t badDst[7]; + wchar_t badArray[7]; + wchar_t *volatile badDst = badArray; wcsncpy(badDst, src, 7); // This should still work. fprintf(stderr, "Good so far.\n"); // CHECK-DAG: Good so far.