llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: Vitaly Buka (vitalybuka)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/195673.diff


1 Files Affected:

- (modified) compiler-rt/test/asan/TestCases/contiguous_container_crash.cpp 
(+73) 


``````````diff
diff --git a/compiler-rt/test/asan/TestCases/contiguous_container_crash.cpp 
b/compiler-rt/test/asan/TestCases/contiguous_container_crash.cpp
index a13d52bb21743..93e0d8d158d80 100644
--- a/compiler-rt/test/asan/TestCases/contiguous_container_crash.cpp
+++ b/compiler-rt/test/asan/TestCases/contiguous_container_crash.cpp
@@ -6,6 +6,15 @@
 // RUN: not %run %t odd-alignment-end 2>&1 | FileCheck 
--check-prefix=CHECK-CRASH %s
 // RUN: %env_asan_opts=detect_container_overflow=0 %run %t crash
 //
+// RUN: not %run %t double-crash-beg 2>&1 | FileCheck 
--check-prefix=DOUBLE-CRASH-BEG %s
+// RUN: not %run %t double-crash-end 2>&1 | FileCheck 
--check-prefix=DOUBLE-CRASH-END %s
+// RUN: not %run %t double-bad-bounds 2>&1 | FileCheck 
--check-prefix=DOUBLE-BAD-BOUNDS %s
+// RUN: not %run %t double-unaligned-bad-bounds 2>&1 | FileCheck 
--check-prefix=DOUBLE-UNALIGNED-BAD-BOUNDS %s --implicit-check-not="beg is not 
aligned by"
+// RUN: not %run %t double-odd-alignment 2>&1 | FileCheck 
--check-prefix=DOUBLE-CRASH-BEG %s
+// RUN: not %run %t double-odd-alignment-end 2>&1 | FileCheck 
--check-prefix=DOUBLE-CRASH-END %s
+// RUN: %env_asan_opts=detect_container_overflow=0 %run %t double-crash-beg
+// RUN: %env_asan_opts=detect_container_overflow=0 %run %t double-crash-end
+//
 // Test crash due to __sanitizer_annotate_contiguous_container.
 
 #include <assert.h>
@@ -55,6 +64,58 @@ int OddAlignmentEnd() {
   return (int)t[60 * one]; // Touches the poisoned memory.
 }
 
+int DoubleEndedTestCrashBeg() {
+  long t[100];
+  t[15] = 0;
+  __sanitizer_annotate_double_ended_contiguous_container(
+      &t[0], &t[0] + 100, &t[0], &t[0] + 100, &t[0] + 25, &t[0] + 75);
+// DOUBLE-CRASH-BEG: AddressSanitizer: container-overflow
+// DOUBLE-CRASH-BEG: if you don't care about these errors you may set 
ASAN_OPTIONS=detect_container_overflow=0
+  return (int)t[15 * one];
+}
+
+int DoubleEndedTestCrashEnd() {
+  long t[100];
+  t[85] = 0;
+  __sanitizer_annotate_double_ended_contiguous_container(
+      &t[0], &t[0] + 100, &t[0], &t[0] + 100, &t[0] + 25, &t[0] + 75);
+// DOUBLE-CRASH-END: AddressSanitizer: container-overflow
+// DOUBLE-CRASH-END: if you don't care about these errors you may set 
ASAN_OPTIONS=detect_container_overflow=0
+  return (int)t[85 * one];
+}
+
+void DoubleEndedBadBounds() {
+  long t[100];
+// DOUBLE-BAD-BOUNDS: ERROR: AddressSanitizer: bad parameters to 
__sanitizer_annotate_double_ended_contiguous_container
+  __sanitizer_annotate_double_ended_contiguous_container(
+      &t[0], &t[0] + 100, &t[0], &t[0] + 100, &t[0] + 75, &t[0] + 25);
+}
+
+void DoubleEndedUnalignedBadBounds() {
+  char t[100];
+// DOUBLE-UNALIGNED-BAD-BOUNDS: ERROR: AddressSanitizer: bad parameters to 
__sanitizer_annotate_double_ended_contiguous_container
+  __sanitizer_annotate_double_ended_contiguous_container(
+      &t[1], &t[0] + 100, &t[0], &t[0] + 100, &t[0] + 25, &t[0] + 75);
+}
+
+int DoubleEndedOddAlignment() {
+  int t[100];
+  t[5] = 0;
+  __sanitizer_annotate_double_ended_contiguous_container(
+      &t[1], &t[0] + 100, &t[1], &t[0] + 100, &t[1] + 10, &t[1] + 60);
+// DOUBLE-CRASH-BEG: AddressSanitizer: container-overflow
+  return (int)t[5 * one];
+}
+
+int DoubleEndedOddAlignmentEnd() {
+  int t[100];
+  t[95] = 0;
+  __sanitizer_annotate_double_ended_contiguous_container(
+      &t[0], &t[0] + 99, &t[0], &t[0] + 99, &t[0] + 10, &t[0] + 90);
+// DOUBLE-CRASH-END: AddressSanitizer: container-overflow
+  return (int)t[95 * one];
+}
+
 int main(int argc, char **argv) {
   assert(argc == 2);
   if (!strcmp(argv[1], "crash"))
@@ -67,5 +128,17 @@ int main(int argc, char **argv) {
     return OddAlignment();
   else if (!strcmp(argv[1], "odd-alignment-end"))
     return OddAlignmentEnd();
+  else if (!strcmp(argv[1], "double-crash-beg"))
+    return DoubleEndedTestCrashBeg();
+  else if (!strcmp(argv[1], "double-crash-end"))
+    return DoubleEndedTestCrashEnd();
+  else if (!strcmp(argv[1], "double-bad-bounds"))
+    DoubleEndedBadBounds();
+  else if (!strcmp(argv[1], "double-unaligned-bad-bounds"))
+    DoubleEndedUnalignedBadBounds();
+  else if (!strcmp(argv[1], "double-odd-alignment"))
+    return DoubleEndedOddAlignment();
+  else if (!strcmp(argv[1], "double-odd-alignment-end"))
+    return DoubleEndedOddAlignmentEnd();
   return 0;
 }

``````````

</details>


https://github.com/llvm/llvm-project/pull/195673
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to