1*890232f2SAndroid Build Coastguard Worker #include <iostream> 2*890232f2SAndroid Build Coastguard Worker #include <assert.h> 3*890232f2SAndroid Build Coastguard Worker 4*890232f2SAndroid Build Coastguard Worker #include "flatbuffers/util.h" 5*890232f2SAndroid Build Coastguard Worker 6*890232f2SAndroid Build Coastguard Worker extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); 7*890232f2SAndroid Build Coastguard Worker main(int argc,char * argv[])8*890232f2SAndroid Build Coastguard Workerint main(int argc, char *argv[]) { 9*890232f2SAndroid Build Coastguard Worker if (argc < 2) { 10*890232f2SAndroid Build Coastguard Worker std::cerr << "Usage: monster_debug <path to fuzzer crash file>\n"; 11*890232f2SAndroid Build Coastguard Worker return 0; 12*890232f2SAndroid Build Coastguard Worker } 13*890232f2SAndroid Build Coastguard Worker std::string crash_file_name(argv[1]); 14*890232f2SAndroid Build Coastguard Worker std::string crash_file_data; 15*890232f2SAndroid Build Coastguard Worker auto done = 16*890232f2SAndroid Build Coastguard Worker flatbuffers::LoadFile(crash_file_name.c_str(), true, &crash_file_data); 17*890232f2SAndroid Build Coastguard Worker if (!done) { 18*890232f2SAndroid Build Coastguard Worker std::cerr << "Can not load file: '" << crash_file_name << "'"; 19*890232f2SAndroid Build Coastguard Worker return -1; 20*890232f2SAndroid Build Coastguard Worker } 21*890232f2SAndroid Build Coastguard Worker if (crash_file_data.size() < 3) { 22*890232f2SAndroid Build Coastguard Worker std::cerr << "Invalid file data: '" << crash_file_data << "'"; 23*890232f2SAndroid Build Coastguard Worker return -2; 24*890232f2SAndroid Build Coastguard Worker } 25*890232f2SAndroid Build Coastguard Worker auto rc = LLVMFuzzerTestOneInput( 26*890232f2SAndroid Build Coastguard Worker reinterpret_cast<const uint8_t *>(crash_file_data.data()), 27*890232f2SAndroid Build Coastguard Worker crash_file_data.size()); 28*890232f2SAndroid Build Coastguard Worker std::cout << "LLVMFuzzerTestOneInput finished with code " << rc << "\n\n"; 29*890232f2SAndroid Build Coastguard Worker return rc; 30*890232f2SAndroid Build Coastguard Worker } 31