#include <iostream>
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/path_service.h"
#include "base/process/launch.h"
#include "base/strings/string_split.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "testing/libfuzzer/fuzztest_wrapper_buildflags.h"
extern const char* kFuzzerBinary;
extern const char* kFuzzerArgs;
#if BUILDFLAG(USE_CENTIPEDE)
namespace {
void HandleReplayMode(auto& args) {
if (args.size() <= 1) {
return;
}
base::FilePath test_case(args.back());
if (!base::PathExists(test_case)) {
return;
}
auto env = base::Environment::Create();
#if BUILDFLAG(IS_WIN)
auto env_value = base::WideToUTF8(args.back());
#else
auto env_value = args.back();
#endif
env->SetVar("FUZZTEST_REPLAY", env_value);
env->UnSetVar("CENTIPEDE_RUNNER_FLAGS");
std::cerr << "FuzzTest wrapper setting env var: FUZZTEST_REPLAY="
<< args.back() << '\n';
args.pop_back();
}
}
#endif
int main(int argc, const char* const* argv) { … }
#if defined(WIN32)
#define ALWAYS_EXPORT …
#else
#define ALWAYS_EXPORT …
#endif
ALWAYS_EXPORT extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data,
size_t size) { … }