diff options
-rw-r--r-- | BUILD.gn | 11 | ||||
-rw-r--r-- | testing/libfuzzer/BUILD.gn | 2 | ||||
-rw-r--r-- | testing/libfuzzer/fuzzers/BUILD.gn | 4 | ||||
-rw-r--r-- | testing/libfuzzer/fuzzers/pdfium_fuzzer.cc | 1 | ||||
-rw-r--r-- | testing/libfuzzer/unittest_main.cc | 32 |
5 files changed, 41 insertions, 9 deletions
@@ -648,6 +648,8 @@ group("gn_only") { "//media/cast:udp_proxy", "//native_client/src/trusted/debug_stub:gdb_rsp_unittest", "//storage/browser:dump_file_system", + "//testing/libfuzzer/fuzzers", + "//testing/libfuzzer/tests:libfuzzer_tests", "//third_party/angle:libANGLE", "//third_party/angle:libEGL", "//third_party/angle:libGLESv2", @@ -731,15 +733,6 @@ group("gn_only") { "//blimp:blimp_tests", ] } - - if (use_libfuzzer || use_drfuzz) { - # these are needed only for gn to discover build files. - deps += [ - "//testing/libfuzzer:libfuzzer_main", - "//testing/libfuzzer/fuzzers:string_to_int_fuzzer", - "//testing/libfuzzer/tests:libfuzzer_tests", - ] - } } group("gn_mojo_targets") { diff --git a/testing/libfuzzer/BUILD.gn b/testing/libfuzzer/BUILD.gn index d5ec6326..735afd7 100644 --- a/testing/libfuzzer/BUILD.gn +++ b/testing/libfuzzer/BUILD.gn @@ -32,6 +32,8 @@ static_library("libfuzzer_main") { ] } else if (use_drfuzz) { sources += [ "drfuzz_main.cc" ] + } else { + sources += [ "unittest_main.cc" ] } } diff --git a/testing/libfuzzer/fuzzers/BUILD.gn b/testing/libfuzzer/fuzzers/BUILD.gn index 8fa3e88..94680fe 100644 --- a/testing/libfuzzer/fuzzers/BUILD.gn +++ b/testing/libfuzzer/fuzzers/BUILD.gn @@ -8,6 +8,10 @@ import("//build/config/features.gni") import("//media/media_options.gni") import("//testing/libfuzzer/fuzzer_test.gni") +# root BUILD depenends on this target. Needed for package discovery +group("fuzzers") { +} + fuzzer_test("empty_fuzzer") { sources = [ "empty_fuzzer.cc", diff --git a/testing/libfuzzer/fuzzers/pdfium_fuzzer.cc b/testing/libfuzzer/fuzzers/pdfium_fuzzer.cc index 1ccd4f1..4b23b59 100644 --- a/testing/libfuzzer/fuzzers/pdfium_fuzzer.cc +++ b/testing/libfuzzer/fuzzers/pdfium_fuzzer.cc @@ -4,6 +4,7 @@ // This fuzzer is simplified & cleaned up pdfium/samples/pdfium_test.cc +#include <assert.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> diff --git a/testing/libfuzzer/unittest_main.cc b/testing/libfuzzer/unittest_main.cc new file mode 100644 index 0000000..45fd2c6 --- /dev/null +++ b/testing/libfuzzer/unittest_main.cc @@ -0,0 +1,32 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// A simple unit-test style driver for libfuzzer tests. +// Usage: <fuzzer_test> <file>... + +#include <fstream> +#include <iostream> +#include <iterator> +#include <vector> + +extern "C" int LLVMFuzzerTestOneInput(const unsigned char* data, size_t size); + +std::vector<char> readFile(std::string path) { + std::ifstream in(path); + return std::vector<char>((std::istreambuf_iterator<char>(in)), + std::istreambuf_iterator<char>()); +} + +int main(int argc, char **argv) { + if (argc == 1) { + std::cerr << "Usage: " << argv[0] << " <file>..." << std::endl; + exit(1); + } + + for (int i = 1; i < argc; ++i) { + std::cout << argv[i] << std::endl; + auto v = readFile(argv[i]); + LLVMFuzzerTestOneInput((const unsigned char *)v.data(), v.size()); + } +} |