1*a34c65e8SMatt Morehouse #include <cstdint> 2*a34c65e8SMatt Morehouse #include <cstdio> 3*a34c65e8SMatt Morehouse 4*a34c65e8SMatt Morehouse struct Simple { 5*a34c65e8SMatt Morehouse int x_; SimpleSimple6*a34c65e8SMatt Morehouse Simple() { 7*a34c65e8SMatt Morehouse x_ = 5; 8*a34c65e8SMatt Morehouse } ~SimpleSimple9*a34c65e8SMatt Morehouse ~Simple() { 10*a34c65e8SMatt Morehouse x_ += 1; 11*a34c65e8SMatt Morehouse } 12*a34c65e8SMatt Morehouse }; 13*a34c65e8SMatt Morehouse 14*a34c65e8SMatt Morehouse Simple *volatile SimpleSink; 15*a34c65e8SMatt Morehouse LLVMFuzzerTestOneInput(const uint8_t * Data,size_t Size)16*a34c65e8SMatt Morehouseextern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { 17*a34c65e8SMatt Morehouse if (Size < 4) return 0; 18*a34c65e8SMatt Morehouse if (Data[0] == 'F' && Data[1] == 'U' && Data[2] == 'Z' && Data[3] == 'Z') { 19*a34c65e8SMatt Morehouse { 20*a34c65e8SMatt Morehouse Simple S; 21*a34c65e8SMatt Morehouse SimpleSink = &S; 22*a34c65e8SMatt Morehouse } 23*a34c65e8SMatt Morehouse if (SimpleSink->x_) fprintf(stderr, "Failed to catch use-after-dtor\n"); 24*a34c65e8SMatt Morehouse } 25*a34c65e8SMatt Morehouse return 0; 26*a34c65e8SMatt Morehouse } 27*a34c65e8SMatt Morehouse 28