]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/fuzzer/UseAfterDtor.cpp
Vendor import of compiler-rt trunk r351319 (just before the release_80
[FreeBSD/FreeBSD.git] / test / fuzzer / UseAfterDtor.cpp
1 #include <cstdint>
2 #include <cstdio>
3
4 struct Simple {
5   int x_;
6   Simple() {
7     x_ = 5;
8   }
9   ~Simple() {
10     x_ += 1;
11   }
12 };
13
14 Simple *volatile SimpleSink;
15
16 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
17   if (Size < 4) return 0;
18   if (Data[0] == 'F' && Data[1] == 'U' && Data[2] == 'Z' && Data[3] == 'Z') {
19     {
20       Simple S;
21       SimpleSink = &S;
22     }
23     if (SimpleSink->x_) fprintf(stderr, "Failed to catch use-after-dtor\n");
24   }
25   return 0;
26 }
27