1// RUN: %clangxx -O2 %s -o %t
2
3// Case 1: Try setting a path that is an invalid/inaccessible directory.
4// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=ERROR1
5
6// Case 2: Try setting a path that is too large.
7// RUN: not %run %t A 2>&1 | FileCheck %s --check-prefix=ERROR2
8
9#include <sanitizer/common_interface_defs.h>
10#include <stdio.h>
11
12int main(int argc, char **argv) {
13 char buff[4096];
14 if (argc == 1) {
15 // Case 1
16 sprintf(s: buff, format: "%s/report", argv[0]);
17 // ERROR1: Can't create directory: {{.*}}
18 } else {
19 // Case 2
20 snprintf(s: buff, maxlen: sizeof(buff), format: "%04095d", 42);
21 // ERROR2: Path is too long: 00000000...
22 }
23 __sanitizer_set_report_path(path: buff);
24}
25

source code of compiler-rt/test/sanitizer_common/TestCases/Posix/sanitizer_set_report_path_fail.cpp