xref: /aosp_15_r20/external/fmtlib/test/fuzzing/main.cc (revision 5c90c05cd622c0a81b57953a4d343e0e489f2e08)
1*5c90c05cSAndroid Build Coastguard Worker #include <cassert>
2*5c90c05cSAndroid Build Coastguard Worker #include <fstream>
3*5c90c05cSAndroid Build Coastguard Worker #include <vector>
4*5c90c05cSAndroid Build Coastguard Worker 
5*5c90c05cSAndroid Build Coastguard Worker #include "fuzzer-common.h"
6*5c90c05cSAndroid Build Coastguard Worker 
7*5c90c05cSAndroid Build Coastguard Worker extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size);
8*5c90c05cSAndroid Build Coastguard Worker 
main(int argc,char ** argv)9*5c90c05cSAndroid Build Coastguard Worker int main(int argc, char** argv) {
10*5c90c05cSAndroid Build Coastguard Worker   for (int i = 1; i < argc; ++i) {
11*5c90c05cSAndroid Build Coastguard Worker     std::ifstream in(argv[i]);
12*5c90c05cSAndroid Build Coastguard Worker     assert(in);
13*5c90c05cSAndroid Build Coastguard Worker     in.seekg(0, std::ios_base::end);
14*5c90c05cSAndroid Build Coastguard Worker     const auto size = in.tellg();
15*5c90c05cSAndroid Build Coastguard Worker     assert(size >= 0);
16*5c90c05cSAndroid Build Coastguard Worker     in.seekg(0, std::ios_base::beg);
17*5c90c05cSAndroid Build Coastguard Worker     std::vector<char> buf(static_cast<size_t>(size));
18*5c90c05cSAndroid Build Coastguard Worker     in.read(buf.data(), size);
19*5c90c05cSAndroid Build Coastguard Worker     assert(in.gcount() == size);
20*5c90c05cSAndroid Build Coastguard Worker     LLVMFuzzerTestOneInput(as_bytes(buf.data()), buf.size());
21*5c90c05cSAndroid Build Coastguard Worker   }
22*5c90c05cSAndroid Build Coastguard Worker }
23