diff options
author | Jay Berkenbilt <ejb@ql.org> | 2019-06-13 15:28:38 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2019-06-13 15:28:38 +0200 |
commit | 3d03024ab235cf09517b8b1125093a9062151da2 (patch) | |
tree | c67ed01909153d996e3a14411c9f2141cb3f3ed2 /fuzz/standalone_fuzz_target_runner.cc | |
parent | d263a0493add9ea4bd6b7dae129cfc79b3108067 (diff) | |
download | qpdf-3d03024ab235cf09517b8b1125093a9062151da2.tar.zst |
oss-fuzz initial integration
Diffstat (limited to 'fuzz/standalone_fuzz_target_runner.cc')
-rw-r--r-- | fuzz/standalone_fuzz_target_runner.cc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/fuzz/standalone_fuzz_target_runner.cc b/fuzz/standalone_fuzz_target_runner.cc new file mode 100644 index 00000000..7038f188 --- /dev/null +++ b/fuzz/standalone_fuzz_target_runner.cc @@ -0,0 +1,36 @@ +// Copyright 2017 Google Inc. All Rights Reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); + +// Except for formatting, comments, and portability, this was copied +// from projects/example/my-api-repo/standalone_fuzz_target_runner.cpp +// in https://github.com/oss-fuzz + +#include <cassert> +#include <iostream> +#include <fstream> +#include <vector> + +extern "C" int LLVMFuzzerTestOneInput(unsigned char const* data, size_t size); + +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<char> bytes(length); + in.read(bytes.data(), bytes.size()); + assert(in); + LLVMFuzzerTestOneInput( + reinterpret_cast<unsigned char const*>(bytes.data()), + bytes.size()); + std::cout << "Execution successful" << std::endl; + } + return 0; +} |