Commit 8d0984eb authored by Jonathan Metzman's avatar Jonathan Metzman Committed by Commit Bot

[skia] Initialize allocator properly before fuzzing and move targets

Set the discardable memory allocator before fuzzing to avoid spurious
null derefs when discardable memory is allocated.
Also, move fuzzer build config to
//skia/tools/fuzzers/BUILD.gn

Bug: 903632, 904613
Change-Id: Ib987333706309eb470bcb988c53ddeebf5f5851e
Reviewed-on: https://chromium-review.googlesource.com/c/1336430
Commit-Queue: Jonathan Metzman <metzman@chromium.org>
Reviewed-by: default avatarLeon Scroggins <scroggo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609339}
parent 33ce18df
......@@ -9,7 +9,6 @@ import("//build/config/sanitizers/sanitizers.gni")
import("//gpu/vulkan/features.gni")
import("//printing/buildflags/buildflags.gni")
import("//testing/test.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/skia/gn/shared_sources.gni")
import("//third_party/skia/third_party/skcms/skcms.gni")
......@@ -864,155 +863,8 @@ if (!is_ios) {
}
}
# Build Skia fuzzers from OSS-Fuzz on Windows since Windows is not supported by
# OSS-Fuzz.
if (is_win && use_libfuzzer) {
static_library("skia_fuzzer_lib") {
sources = [
"//third_party/skia/fuzz/Fuzz.cpp",
"//third_party/skia/fuzz/FuzzCommon.cpp",
]
configs += [ ":skia_library_config" ]
# Use public_deps so each fuzzer_test doesn't need to explicitly depend on
# ":skia".
public_deps = [
":skia",
]
}
static_library("skia_encoder_fuzzer_lib") {
sources = [
"//third_party/skia/fuzz/FuzzEncoders.cpp",
]
configs += [ ":skia_library_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",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_fuzzer_lib",
]
}
fuzzer_test("skia_image_filter_deserialize_fuzzer") {
sources = [
"//third_party/skia/fuzz/oss_fuzz/FuzzImageFilterDeserialize.cpp",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_fuzzer_lib",
]
}
fuzzer_test("skia_region_set_path_fuzzer") {
sources = [
"//third_party/skia/fuzz/oss_fuzz/FuzzRegionSetPath.cpp",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_fuzzer_lib",
]
}
fuzzer_test("skia_textblob_deserialize_fuzzer") {
sources = [
"//third_party/skia/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_fuzzer_lib",
]
}
fuzzer_test("skia_path_deserialize_fuzzer") {
sources = [
"//third_party/skia/fuzz/oss_fuzz/FuzzPathDeserialize.cpp",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_fuzzer_lib",
]
}
fuzzer_test("skia_image_decode_fuzzer") {
sources = [
"//third_party/skia/fuzz/oss_fuzz/FuzzImage.cpp",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_fuzzer_lib",
]
}
fuzzer_test("skia_png_encoder_fuzzer") {
sources = [
"//third_party/skia/fuzz/oss_fuzz/FuzzPNGEncoder.cpp",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_encoder_fuzzer_lib",
":skia_fuzzer_lib",
]
}
fuzzer_test("skia_jpeg_encoder_fuzzer") {
sources = [
"//third_party/skia/fuzz/oss_fuzz/FuzzJPEGEncoder.cpp",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_encoder_fuzzer_lib",
":skia_fuzzer_lib",
]
}
fuzzer_test("skia_webp_encoder_fuzzer") {
sources = [
"//third_party/skia/fuzz/oss_fuzz/FuzzWEBPEncoder.cpp",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_encoder_fuzzer_lib",
":skia_fuzzer_lib",
]
}
fuzzer_test("skia_skjson_fuzzer") {
sources = [
"//third_party/skia/fuzz/oss_fuzz/FuzzJSON.cpp",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_fuzzer_lib",
]
}
fuzzer_test("skia_image_decode_incremental_fuzzer") {
sources = [
"//third_party/skia/fuzz/oss_fuzz/FuzzIncrementalImage.cpp",
]
additional_configs = [ ":skia_library_config" ]
defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
deps = [
":skia_fuzzer_lib",
]
}
group("fuzzers") {
deps = [
"//skia/tools/fuzzers",
]
}
# 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",
]
}
# 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",
]
}
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",
]
}
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",
]
}
}
// Copyright 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.
#include "base/test/test_discardable_memory_allocator.h"
namespace {
class Environment {
base::TestDiscardableMemoryAllocator test_memory_allocator_;
public:
Environment() {
base::DiscardableMemoryAllocator::SetInstance(&test_memory_allocator_);
}
};
static Environment env;
}; // namespace
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment