# Copyright (c) 2018 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. import("//testing/libfuzzer/fuzzer_test.gni") group("fuzzers") { } # Build Skia fuzzers from OSS-Fuzz on Windows since Windows is not supported by # OSS-Fuzz. if (is_win && use_libfuzzer) { source_set("skia_fuzzer_sources") { testonly = true sources = [ "//skia/tools/fuzzers/fuzzer_environment.cc", "//third_party/skia/fuzz/Fuzz.cpp", "//third_party/skia/fuzz/FuzzCommon.cpp", ] # Use public_deps and public_configs so each fuzzer_test doesn't need to # explicitly depend on "//skia" and "//skia:skia_library_config". public_deps = [ "//skia" ] public_configs = [ "//skia:skia_library_config" ] deps = [ "//base/test:test_support" ] } static_library("skia_encoder_fuzzer_lib") { sources = [ "//third_party/skia/fuzz/FuzzEncoders.cpp" ] configs += [ "//skia:skia_library_config" ] deps = [ "//skia" ] } config("skia_test_fonts_includes_config") { include_dirs = [ "//third_party/skia/tools/fonts", "//third_party/skia/tools/", ] } static_library("skia_test_fonts") { sources = [ "//third_party/skia/tools/fonts/TestFontMgr.cpp", "//third_party/skia/tools/fonts/TestSVGTypeface.cpp", "//third_party/skia/tools/fonts/TestTypeface.cpp", ] configs += [ "//skia:skia_library_config" ] public_configs = [ ":skia_test_fonts_includes_config" ] deps = [ "//skia" ] } # TODO(metzman): Enable the other fuzzers that cannot yet build in Chromium. fuzzer_test("skia_region_deserialize_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzRegionDeserialize.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_fuzzer_sources" ] } fuzzer_test("skia_image_filter_deserialize_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzImageFilterDeserialize.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_fuzzer_sources", ":skia_test_fonts", ] } fuzzer_test("skia_region_set_path_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzRegionSetPath.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_fuzzer_sources" ] } fuzzer_test("skia_textblob_deserialize_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_fuzzer_sources", ":skia_test_fonts", ] } fuzzer_test("skia_path_deserialize_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzPathDeserialize.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_fuzzer_sources" ] } fuzzer_test("skia_image_decode_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzImage.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_fuzzer_sources" ] } fuzzer_test("skia_png_encoder_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzPNGEncoder.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_encoder_fuzzer_lib", ":skia_fuzzer_sources", ] } fuzzer_test("skia_jpeg_encoder_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzJPEGEncoder.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_encoder_fuzzer_lib", ":skia_fuzzer_sources", ] } fuzzer_test("skia_webp_encoder_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzWEBPEncoder.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_encoder_fuzzer_lib", ":skia_fuzzer_sources", ] } fuzzer_test("skia_skjson_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzJSON.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_fuzzer_sources" ] } fuzzer_test("skia_image_decode_incremental_fuzzer") { sources = [ "//third_party/skia/fuzz/oss_fuzz/FuzzIncrementalImage.cpp" ] defines = [ "IS_FUZZING_WITH_LIBFUZZER" ] deps = [ ":skia_fuzzer_sources" ] } }