#include #include #include #include #include #include "unpack_pack_fuzzer.cpp" using ::testing::TestWithParam; using ::testing::ValuesIn; std::vector ListDirectory(const std::string& path) { std::vector v; boost::filesystem::path p(path); boost::filesystem::directory_iterator f{p}; if(boost::filesystem::is_directory(p)) { while (f != boost::filesystem::directory_iterator{}) { v.push_back((*f++).path().string()); } } return v; } class UnpackPackFuzzerRegressionTest : public ::testing::TestWithParam { public: }; TEST_P(UnpackPackFuzzerRegressionTest, Returns0) { auto fpath = GetParam(); std::ifstream in(fpath, std::ifstream::binary); if (!in) { FAIL() << fpath << " not found"; } in.seekg(0, in.end); size_t length = in.tellg(); in.seekg(0, in.beg); std::vector bytes(length); in.read(bytes.data(), bytes.size()); assert(in); EXPECT_EQ(0, LLVMFuzzerTestOneInput(reinterpret_cast(bytes.data()), bytes.size())); } INSTANTIATE_TEST_CASE_P(UnpackPackFuzzerRegressions, UnpackPackFuzzerRegressionTest, ::testing::ValuesIn(ListDirectory("../../fuzz/unpack_pack_fuzzer_regressions")));