From 2811cc9a77c17ac03aac9c1b582040827a76b0d9 Mon Sep 17 00:00:00 2001 From: Toni Uhlig Date: Tue, 27 Apr 2021 11:22:45 +0200 Subject: Squashed 'deps/cpp-httplib/' content from commit c58b005 git-subtree-dir: deps/cpp-httplib git-subtree-split: c58b00580ee66a248c2ef20334bb84319ccde310 --- test/fuzzing/standalone_fuzz_target_runner.cpp | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 test/fuzzing/standalone_fuzz_target_runner.cpp (limited to 'test/fuzzing/standalone_fuzz_target_runner.cpp') diff --git a/test/fuzzing/standalone_fuzz_target_runner.cpp b/test/fuzzing/standalone_fuzz_target_runner.cpp new file mode 100644 index 0000000..8e34792 --- /dev/null +++ b/test/fuzzing/standalone_fuzz_target_runner.cpp @@ -0,0 +1,35 @@ +// Copyright 2017 Google Inc. All Rights Reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); + +// This runner does not do any fuzzing, but allows us to run the fuzz target +// on the test corpus or on a single file, +// e.g. the one that comes from a bug report. + +#include +#include +#include +#include + +// Forward declare the "fuzz target" interface. +// We deliberately keep this inteface simple and header-free. +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); + +// It reads all files passed as parameters and feeds their contents +// one by one into the fuzz target (LLVMFuzzerTestOneInput). +int main(int argc, char **argv) { + for (int i = 1; i < argc; i++) { + std::ifstream in(argv[i]); + in.seekg(0, in.end); + size_t length = in.tellg(); + in.seekg (0, in.beg); + std::cout << "Reading " << length << " bytes from " << argv[i] << std::endl; + // Allocate exactly length bytes so that we reliably catch buffer overflows. + std::vector bytes(length); + in.read(bytes.data(), bytes.size()); + LLVMFuzzerTestOneInput(reinterpret_cast(bytes.data()), + bytes.size()); + std::cout << "Execution successful" << std::endl; + } + std::cout << "Execution finished" << std::endl; + return 0; +} \ No newline at end of file -- cgit v1.2.3