summaryrefslogtreecommitdiffstats
path: root/fuzz/standalone_fuzz_target_runner.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2019-06-13 15:28:38 +0200
committerJay Berkenbilt <ejb@ql.org>2019-06-13 15:28:38 +0200
commit3d03024ab235cf09517b8b1125093a9062151da2 (patch)
treec67ed01909153d996e3a14411c9f2141cb3f3ed2 /fuzz/standalone_fuzz_target_runner.cc
parentd263a0493add9ea4bd6b7dae129cfc79b3108067 (diff)
downloadqpdf-3d03024ab235cf09517b8b1125093a9062151da2.tar.zst
oss-fuzz initial integration
Diffstat (limited to 'fuzz/standalone_fuzz_target_runner.cc')
-rw-r--r--fuzz/standalone_fuzz_target_runner.cc36
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;
+}