llvm-project/compiler-rt/test/fuzzer/UseAfterDtor.cpp

28 lines
483 B
C++

#include <cstdint>
#include <cstdio>
struct Simple {
int x_;
Simple() {
x_ = 5;
}
~Simple() {
x_ += 1;
}
};
Simple *volatile SimpleSink;
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
if (Size < 4) return 0;
if (Data[0] == 'F' && Data[1] == 'U' && Data[2] == 'Z' && Data[3] == 'Z') {
{
Simple S;
SimpleSink = &S;
}
if (SimpleSink->x_) fprintf(stderr, "Failed to catch use-after-dtor\n");
}
return 0;
}