diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-05-24 11:40:17 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-05-24 12:42:11 +0000 |
commit | 5d87695f37678f96492b258bbab36486c59866b4 (patch) | |
tree | be9783bbaf04fb930c4d74ca9c00b5e7954c8bc6 /chromium/testing | |
parent | 6c11fb357ec39bf087b8b632e2b1e375aef1b38b (diff) | |
download | qtwebengine-chromium-5d87695f37678f96492b258bbab36486c59866b4.tar.gz |
BASELINE: Update Chromium to 75.0.3770.56
Change-Id: I86d2007fd27a45d5797eee06f4c9369b8b50ac4f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/testing')
120 files changed, 1432 insertions, 5897 deletions
diff --git a/chromium/testing/android/reporter/BUILD.gn b/chromium/testing/android/reporter/BUILD.gn index fac1b03ba7e..3b12b2ad7de 100644 --- a/chromium/testing/android/reporter/BUILD.gn +++ b/chromium/testing/android/reporter/BUILD.gn @@ -10,7 +10,7 @@ android_library("reporter_java") { deps = [ "//base:base_java", - "//third_party/android_tools:android_test_base_java", + "//third_party/android_sdk:android_test_base_java", ] java_files = [ diff --git a/chromium/testing/buildbot/filters/BUILD.gn b/chromium/testing/buildbot/filters/BUILD.gn index 79ccffb9e55..ef0c07fcaa6 100644 --- a/chromium/testing/buildbot/filters/BUILD.gn +++ b/chromium/testing/buildbot/filters/BUILD.gn @@ -22,6 +22,7 @@ source_set("browser_tests_filters") { data = [ "//testing/buildbot/filters/chromeos.mash.browser_tests.filter", "//testing/buildbot/filters/chromeos.mash.fyi.browser_tests.filter", + "//testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter", "//testing/buildbot/filters/webui_polymer1_browser_tests.filter", "//testing/buildbot/filters/webrtc_functional.browser_tests.filter", ] diff --git a/chromium/testing/iossim/iossim.mm b/chromium/testing/iossim/iossim.mm index 1cf3be2f36a..1240c62b115 100644 --- a/chromium/testing/iossim/iossim.mm +++ b/chromium/testing/iossim/iossim.mm @@ -190,6 +190,17 @@ NSString* GetDeviceBySDKAndName(NSDictionary* simctl_list, NSString* sdk_version) { NSString* sdk = [@"iOS " stringByAppendingString:sdk_version]; NSArray* devices = [simctl_list[@"devices"] objectForKey:sdk]; + // Pre-Xcode 10.2's simulator, xcrun simctl -j returned "devices" that looked + // like "iOS 12.1". Now they look like + // com.apple.CoreSimulator.SimRuntime.iOS-12-1. Only use this block when all + // bots move to Xcode 10.2+ + if (devices == nil || [devices count] == 0) { + sdk_version = [sdk_version stringByReplacingOccurrencesOfString:@"." + withString:@"-"]; + NSString* sdk = [@"com.apple.CoreSimulator.SimRuntime.iOS-" + stringByAppendingString:sdk_version]; + devices = [simctl_list[@"devices"] objectForKey:sdk]; + } for (NSDictionary* device in devices) { if ([device[@"name"] isEqualToString:device_name]) { return device[@"udid"]; diff --git a/chromium/testing/libfuzzer/BUILD.gn b/chromium/testing/libfuzzer/BUILD.gn index c7d1ed6b86f..da8f62d013d 100644 --- a/chromium/testing/libfuzzer/BUILD.gn +++ b/chromium/testing/libfuzzer/BUILD.gn @@ -18,8 +18,6 @@ source_set("libfuzzer_main") { deps += [ "//third_party/libFuzzer:libfuzzer" ] } else if (use_afl) { deps += [ "//third_party/libFuzzer:afl_driver" ] - } else if (use_drfuzz) { - sources += [ "drfuzz_main.cc" ] } else { sources += [ "unittest_main.cc" ] } diff --git a/chromium/testing/libfuzzer/archive_corpus.py b/chromium/testing/libfuzzer/archive_corpus.py index a3fd29fa365..dddc18ffaf2 100755 --- a/chromium/testing/libfuzzer/archive_corpus.py +++ b/chromium/testing/libfuzzer/archive_corpus.py @@ -16,6 +16,8 @@ import sys import warnings import zipfile +SEED_CORPUS_LIMIT_MB = 100 + def main(): parser = argparse.ArgumentParser(description="Generate fuzzer config.") @@ -23,9 +25,10 @@ def main(): nargs='+') parser.add_argument('--output', metavar='output_archive_name.zip', required=True) - args = parser.parse_args() + args = parser.parse_args() corpus_files = [] + seed_corpus_path = args.output for directory in args.corpus_directories: if not os.path.exists(directory): @@ -36,7 +39,7 @@ def main(): full_filename = os.path.join(dirpath, filename) corpus_files.append(full_filename) - with zipfile.ZipFile(args.output, 'w') as z: + with zipfile.ZipFile(seed_corpus_path, 'w') as z: # Turn warnings into errors to interrupt the build: crbug.com/653920. with warnings.catch_warnings(): warnings.simplefilter("error") @@ -45,6 +48,10 @@ def main(): arcname = '%016d' % i z.write(corpus_file, arcname) + if os.path.getsize(seed_corpus_path) > SEED_CORPUS_LIMIT_MB * 1024 * 1024: + print('Seed corpus %s exceeds maximum allowed size (%d MB).' % + (seed_corpus_path, SEED_CORPUS_LIMIT_MB)) + sys.exit(-1) if __name__ == '__main__': main() diff --git a/chromium/testing/libfuzzer/drfuzz_main.cc b/chromium/testing/libfuzzer/drfuzz_main.cc deleted file mode 100644 index 38bbe562408..00000000000 --- a/chromium/testing/libfuzzer/drfuzz_main.cc +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) 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. - -#include <stddef.h> -#include <stdint.h> - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size); - -// Provide main for running fuzzer tests with Dr. Fuzz. -int main(int argc, char **argv) -{ - static const size_t kFuzzInputMaxSize = 8; - uint8_t* fuzz_input = new uint8_t[kFuzzInputMaxSize](); - // The buffer and size arguments can be changed by Dr. Fuzz. - int result = LLVMFuzzerTestOneInput(fuzz_input, kFuzzInputMaxSize); - delete[] fuzz_input; - return result; -} diff --git a/chromium/testing/libfuzzer/fuzzer_test.gni b/chromium/testing/libfuzzer/fuzzer_test.gni index 9df3c0d3b5d..4d16b7007a0 100644 --- a/chromium/testing/libfuzzer/fuzzer_test.gni +++ b/chromium/testing/libfuzzer/fuzzer_test.gni @@ -35,7 +35,7 @@ import("//testing/test.gni") # config (.options file) file would be generated or modified in root output # dir (next to test). template("fuzzer_test") { - if (!disable_libfuzzer && (use_fuzzing_engine || use_drfuzz || is_linux)) { + if (!disable_libfuzzer && (use_fuzzing_engine || is_linux)) { assert(defined(invoker.sources), "Need sources in $target_name.") test_deps = [ "//testing/libfuzzer:libfuzzer_main" ] @@ -81,7 +81,9 @@ template("fuzzer_test") { deps = [ "//testing/libfuzzer:seed_corpus" ] + seed_corpus_deps } - test_deps += [ ":" + target_name + "_seed_corpus" ] + if (!archive_seed_corpus) { + test_deps += [ ":" + target_name + "_seed_corpus" ] + } } if (defined(invoker.dict) || defined(invoker.libfuzzer_options) || diff --git a/chromium/testing/libfuzzer/fuzzers/color_space_data.h b/chromium/testing/libfuzzer/fuzzers/color_space_data.h deleted file mode 100644 index 0409e7882d6..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/color_space_data.h +++ /dev/null @@ -1,379 +0,0 @@ -// Copyright 2017 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. - -#ifndef TESTING_LIBFUZZER_FUZZERS_COLOR_SPACE_DATA_H -#define TESTING_LIBFUZZER_FUZZERS_COLOR_SPACE_DATA_H - -static const char kSRGBData[] = { - // sRGB profile with tabular gamma curves. - 0x00, 0x00, 0x0c, 0x48, 0x4c, 0x69, 0x6e, 0x6f, 0x02, 0x10, 0x00, 0x00, - 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, 0x20, 0x58, 0x59, 0x5a, 0x20, - 0x07, 0xce, 0x00, 0x02, 0x00, 0x09, 0x00, 0x06, 0x00, 0x31, 0x00, 0x00, - 0x61, 0x63, 0x73, 0x70, 0x4d, 0x53, 0x46, 0x54, 0x00, 0x00, 0x00, 0x00, - 0x49, 0x45, 0x43, 0x20, 0x73, 0x52, 0x47, 0x42, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xd6, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x2d, 0x48, 0x50, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x63, 0x70, 0x72, 0x74, 0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x00, 0x33, - 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x01, 0x84, 0x00, 0x00, 0x00, 0x6c, - 0x77, 0x74, 0x70, 0x74, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x14, - 0x62, 0x6b, 0x70, 0x74, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x14, - 0x72, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x02, 0x18, 0x00, 0x00, 0x00, 0x14, - 0x67, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x02, 0x2c, 0x00, 0x00, 0x00, 0x14, - 0x62, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x14, - 0x64, 0x6d, 0x6e, 0x64, 0x00, 0x00, 0x02, 0x54, 0x00, 0x00, 0x00, 0x70, - 0x64, 0x6d, 0x64, 0x64, 0x00, 0x00, 0x02, 0xc4, 0x00, 0x00, 0x00, 0x88, - 0x76, 0x75, 0x65, 0x64, 0x00, 0x00, 0x03, 0x4c, 0x00, 0x00, 0x00, 0x86, - 0x76, 0x69, 0x65, 0x77, 0x00, 0x00, 0x03, 0xd4, 0x00, 0x00, 0x00, 0x24, - 0x6c, 0x75, 0x6d, 0x69, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x14, - 0x6d, 0x65, 0x61, 0x73, 0x00, 0x00, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x24, - 0x74, 0x65, 0x63, 0x68, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x0c, - 0x72, 0x54, 0x52, 0x43, 0x00, 0x00, 0x04, 0x3c, 0x00, 0x00, 0x08, 0x0c, - 0x67, 0x54, 0x52, 0x43, 0x00, 0x00, 0x04, 0x3c, 0x00, 0x00, 0x08, 0x0c, - 0x62, 0x54, 0x52, 0x43, 0x00, 0x00, 0x04, 0x3c, 0x00, 0x00, 0x08, 0x0c, - 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x43, 0x6f, 0x70, 0x79, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, - 0x39, 0x38, 0x20, 0x48, 0x65, 0x77, 0x6c, 0x65, 0x74, 0x74, 0x2d, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x72, 0x64, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, - 0x6e, 0x79, 0x00, 0x00, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, 0x73, 0x52, 0x47, 0x42, 0x20, 0x49, 0x45, 0x43, - 0x36, 0x31, 0x39, 0x36, 0x36, 0x2d, 0x32, 0x2e, 0x31, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x73, 0x52, 0x47, - 0x42, 0x20, 0x49, 0x45, 0x43, 0x36, 0x31, 0x39, 0x36, 0x36, 0x2d, 0x32, - 0x2e, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf3, 0x51, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0xcc, - 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x59, 0x5a, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xa2, 0x00, 0x00, 0x38, 0xf5, - 0x00, 0x00, 0x03, 0x90, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0x99, 0x00, 0x00, 0xb7, 0x85, 0x00, 0x00, 0x18, 0xda, - 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xa0, - 0x00, 0x00, 0x0f, 0x84, 0x00, 0x00, 0xb6, 0xcf, 0x64, 0x65, 0x73, 0x63, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x49, 0x45, 0x43, 0x20, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, - 0x65, 0x63, 0x2e, 0x63, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x49, 0x45, 0x43, 0x20, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x65, 0x63, 0x2e, - 0x63, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, - 0x49, 0x45, 0x43, 0x20, 0x36, 0x31, 0x39, 0x36, 0x36, 0x2d, 0x32, 0x2e, - 0x31, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x52, 0x47, - 0x42, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x20, 0x2d, 0x20, 0x73, 0x52, 0x47, 0x42, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x49, 0x45, 0x43, - 0x20, 0x36, 0x31, 0x39, 0x36, 0x36, 0x2d, 0x32, 0x2e, 0x31, 0x20, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x52, 0x47, 0x42, 0x20, 0x63, - 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, - 0x2d, 0x20, 0x73, 0x52, 0x47, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x20, 0x56, 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x49, - 0x45, 0x43, 0x36, 0x31, 0x39, 0x36, 0x36, 0x2d, 0x32, 0x2e, 0x31, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x56, 0x69, 0x65, - 0x77, 0x69, 0x6e, 0x67, 0x20, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x49, 0x45, 0x43, 0x36, 0x31, 0x39, - 0x36, 0x36, 0x2d, 0x32, 0x2e, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x65, 0x77, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xa4, 0xfe, 0x00, 0x14, 0x5f, 0x2e, - 0x00, 0x10, 0xcf, 0x14, 0x00, 0x03, 0xed, 0xcc, 0x00, 0x04, 0x13, 0x0b, - 0x00, 0x03, 0x5c, 0x9e, 0x00, 0x00, 0x00, 0x01, 0x58, 0x59, 0x5a, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x09, 0x56, 0x00, 0x50, 0x00, 0x00, - 0x00, 0x57, 0x1f, 0xe7, 0x6d, 0x65, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x8f, - 0x00, 0x00, 0x00, 0x02, 0x73, 0x69, 0x67, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x52, 0x54, 0x20, 0x63, 0x75, 0x72, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x0f, - 0x00, 0x14, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x23, 0x00, 0x28, 0x00, 0x2d, - 0x00, 0x32, 0x00, 0x37, 0x00, 0x3b, 0x00, 0x40, 0x00, 0x45, 0x00, 0x4a, - 0x00, 0x4f, 0x00, 0x54, 0x00, 0x59, 0x00, 0x5e, 0x00, 0x63, 0x00, 0x68, - 0x00, 0x6d, 0x00, 0x72, 0x00, 0x77, 0x00, 0x7c, 0x00, 0x81, 0x00, 0x86, - 0x00, 0x8b, 0x00, 0x90, 0x00, 0x95, 0x00, 0x9a, 0x00, 0x9f, 0x00, 0xa4, - 0x00, 0xa9, 0x00, 0xae, 0x00, 0xb2, 0x00, 0xb7, 0x00, 0xbc, 0x00, 0xc1, - 0x00, 0xc6, 0x00, 0xcb, 0x00, 0xd0, 0x00, 0xd5, 0x00, 0xdb, 0x00, 0xe0, - 0x00, 0xe5, 0x00, 0xeb, 0x00, 0xf0, 0x00, 0xf6, 0x00, 0xfb, 0x01, 0x01, - 0x01, 0x07, 0x01, 0x0d, 0x01, 0x13, 0x01, 0x19, 0x01, 0x1f, 0x01, 0x25, - 0x01, 0x2b, 0x01, 0x32, 0x01, 0x38, 0x01, 0x3e, 0x01, 0x45, 0x01, 0x4c, - 0x01, 0x52, 0x01, 0x59, 0x01, 0x60, 0x01, 0x67, 0x01, 0x6e, 0x01, 0x75, - 0x01, 0x7c, 0x01, 0x83, 0x01, 0x8b, 0x01, 0x92, 0x01, 0x9a, 0x01, 0xa1, - 0x01, 0xa9, 0x01, 0xb1, 0x01, 0xb9, 0x01, 0xc1, 0x01, 0xc9, 0x01, 0xd1, - 0x01, 0xd9, 0x01, 0xe1, 0x01, 0xe9, 0x01, 0xf2, 0x01, 0xfa, 0x02, 0x03, - 0x02, 0x0c, 0x02, 0x14, 0x02, 0x1d, 0x02, 0x26, 0x02, 0x2f, 0x02, 0x38, - 0x02, 0x41, 0x02, 0x4b, 0x02, 0x54, 0x02, 0x5d, 0x02, 0x67, 0x02, 0x71, - 0x02, 0x7a, 0x02, 0x84, 0x02, 0x8e, 0x02, 0x98, 0x02, 0xa2, 0x02, 0xac, - 0x02, 0xb6, 0x02, 0xc1, 0x02, 0xcb, 0x02, 0xd5, 0x02, 0xe0, 0x02, 0xeb, - 0x02, 0xf5, 0x03, 0x00, 0x03, 0x0b, 0x03, 0x16, 0x03, 0x21, 0x03, 0x2d, - 0x03, 0x38, 0x03, 0x43, 0x03, 0x4f, 0x03, 0x5a, 0x03, 0x66, 0x03, 0x72, - 0x03, 0x7e, 0x03, 0x8a, 0x03, 0x96, 0x03, 0xa2, 0x03, 0xae, 0x03, 0xba, - 0x03, 0xc7, 0x03, 0xd3, 0x03, 0xe0, 0x03, 0xec, 0x03, 0xf9, 0x04, 0x06, - 0x04, 0x13, 0x04, 0x20, 0x04, 0x2d, 0x04, 0x3b, 0x04, 0x48, 0x04, 0x55, - 0x04, 0x63, 0x04, 0x71, 0x04, 0x7e, 0x04, 0x8c, 0x04, 0x9a, 0x04, 0xa8, - 0x04, 0xb6, 0x04, 0xc4, 0x04, 0xd3, 0x04, 0xe1, 0x04, 0xf0, 0x04, 0xfe, - 0x05, 0x0d, 0x05, 0x1c, 0x05, 0x2b, 0x05, 0x3a, 0x05, 0x49, 0x05, 0x58, - 0x05, 0x67, 0x05, 0x77, 0x05, 0x86, 0x05, 0x96, 0x05, 0xa6, 0x05, 0xb5, - 0x05, 0xc5, 0x05, 0xd5, 0x05, 0xe5, 0x05, 0xf6, 0x06, 0x06, 0x06, 0x16, - 0x06, 0x27, 0x06, 0x37, 0x06, 0x48, 0x06, 0x59, 0x06, 0x6a, 0x06, 0x7b, - 0x06, 0x8c, 0x06, 0x9d, 0x06, 0xaf, 0x06, 0xc0, 0x06, 0xd1, 0x06, 0xe3, - 0x06, 0xf5, 0x07, 0x07, 0x07, 0x19, 0x07, 0x2b, 0x07, 0x3d, 0x07, 0x4f, - 0x07, 0x61, 0x07, 0x74, 0x07, 0x86, 0x07, 0x99, 0x07, 0xac, 0x07, 0xbf, - 0x07, 0xd2, 0x07, 0xe5, 0x07, 0xf8, 0x08, 0x0b, 0x08, 0x1f, 0x08, 0x32, - 0x08, 0x46, 0x08, 0x5a, 0x08, 0x6e, 0x08, 0x82, 0x08, 0x96, 0x08, 0xaa, - 0x08, 0xbe, 0x08, 0xd2, 0x08, 0xe7, 0x08, 0xfb, 0x09, 0x10, 0x09, 0x25, - 0x09, 0x3a, 0x09, 0x4f, 0x09, 0x64, 0x09, 0x79, 0x09, 0x8f, 0x09, 0xa4, - 0x09, 0xba, 0x09, 0xcf, 0x09, 0xe5, 0x09, 0xfb, 0x0a, 0x11, 0x0a, 0x27, - 0x0a, 0x3d, 0x0a, 0x54, 0x0a, 0x6a, 0x0a, 0x81, 0x0a, 0x98, 0x0a, 0xae, - 0x0a, 0xc5, 0x0a, 0xdc, 0x0a, 0xf3, 0x0b, 0x0b, 0x0b, 0x22, 0x0b, 0x39, - 0x0b, 0x51, 0x0b, 0x69, 0x0b, 0x80, 0x0b, 0x98, 0x0b, 0xb0, 0x0b, 0xc8, - 0x0b, 0xe1, 0x0b, 0xf9, 0x0c, 0x12, 0x0c, 0x2a, 0x0c, 0x43, 0x0c, 0x5c, - 0x0c, 0x75, 0x0c, 0x8e, 0x0c, 0xa7, 0x0c, 0xc0, 0x0c, 0xd9, 0x0c, 0xf3, - 0x0d, 0x0d, 0x0d, 0x26, 0x0d, 0x40, 0x0d, 0x5a, 0x0d, 0x74, 0x0d, 0x8e, - 0x0d, 0xa9, 0x0d, 0xc3, 0x0d, 0xde, 0x0d, 0xf8, 0x0e, 0x13, 0x0e, 0x2e, - 0x0e, 0x49, 0x0e, 0x64, 0x0e, 0x7f, 0x0e, 0x9b, 0x0e, 0xb6, 0x0e, 0xd2, - 0x0e, 0xee, 0x0f, 0x09, 0x0f, 0x25, 0x0f, 0x41, 0x0f, 0x5e, 0x0f, 0x7a, - 0x0f, 0x96, 0x0f, 0xb3, 0x0f, 0xcf, 0x0f, 0xec, 0x10, 0x09, 0x10, 0x26, - 0x10, 0x43, 0x10, 0x61, 0x10, 0x7e, 0x10, 0x9b, 0x10, 0xb9, 0x10, 0xd7, - 0x10, 0xf5, 0x11, 0x13, 0x11, 0x31, 0x11, 0x4f, 0x11, 0x6d, 0x11, 0x8c, - 0x11, 0xaa, 0x11, 0xc9, 0x11, 0xe8, 0x12, 0x07, 0x12, 0x26, 0x12, 0x45, - 0x12, 0x64, 0x12, 0x84, 0x12, 0xa3, 0x12, 0xc3, 0x12, 0xe3, 0x13, 0x03, - 0x13, 0x23, 0x13, 0x43, 0x13, 0x63, 0x13, 0x83, 0x13, 0xa4, 0x13, 0xc5, - 0x13, 0xe5, 0x14, 0x06, 0x14, 0x27, 0x14, 0x49, 0x14, 0x6a, 0x14, 0x8b, - 0x14, 0xad, 0x14, 0xce, 0x14, 0xf0, 0x15, 0x12, 0x15, 0x34, 0x15, 0x56, - 0x15, 0x78, 0x15, 0x9b, 0x15, 0xbd, 0x15, 0xe0, 0x16, 0x03, 0x16, 0x26, - 0x16, 0x49, 0x16, 0x6c, 0x16, 0x8f, 0x16, 0xb2, 0x16, 0xd6, 0x16, 0xfa, - 0x17, 0x1d, 0x17, 0x41, 0x17, 0x65, 0x17, 0x89, 0x17, 0xae, 0x17, 0xd2, - 0x17, 0xf7, 0x18, 0x1b, 0x18, 0x40, 0x18, 0x65, 0x18, 0x8a, 0x18, 0xaf, - 0x18, 0xd5, 0x18, 0xfa, 0x19, 0x20, 0x19, 0x45, 0x19, 0x6b, 0x19, 0x91, - 0x19, 0xb7, 0x19, 0xdd, 0x1a, 0x04, 0x1a, 0x2a, 0x1a, 0x51, 0x1a, 0x77, - 0x1a, 0x9e, 0x1a, 0xc5, 0x1a, 0xec, 0x1b, 0x14, 0x1b, 0x3b, 0x1b, 0x63, - 0x1b, 0x8a, 0x1b, 0xb2, 0x1b, 0xda, 0x1c, 0x02, 0x1c, 0x2a, 0x1c, 0x52, - 0x1c, 0x7b, 0x1c, 0xa3, 0x1c, 0xcc, 0x1c, 0xf5, 0x1d, 0x1e, 0x1d, 0x47, - 0x1d, 0x70, 0x1d, 0x99, 0x1d, 0xc3, 0x1d, 0xec, 0x1e, 0x16, 0x1e, 0x40, - 0x1e, 0x6a, 0x1e, 0x94, 0x1e, 0xbe, 0x1e, 0xe9, 0x1f, 0x13, 0x1f, 0x3e, - 0x1f, 0x69, 0x1f, 0x94, 0x1f, 0xbf, 0x1f, 0xea, 0x20, 0x15, 0x20, 0x41, - 0x20, 0x6c, 0x20, 0x98, 0x20, 0xc4, 0x20, 0xf0, 0x21, 0x1c, 0x21, 0x48, - 0x21, 0x75, 0x21, 0xa1, 0x21, 0xce, 0x21, 0xfb, 0x22, 0x27, 0x22, 0x55, - 0x22, 0x82, 0x22, 0xaf, 0x22, 0xdd, 0x23, 0x0a, 0x23, 0x38, 0x23, 0x66, - 0x23, 0x94, 0x23, 0xc2, 0x23, 0xf0, 0x24, 0x1f, 0x24, 0x4d, 0x24, 0x7c, - 0x24, 0xab, 0x24, 0xda, 0x25, 0x09, 0x25, 0x38, 0x25, 0x68, 0x25, 0x97, - 0x25, 0xc7, 0x25, 0xf7, 0x26, 0x27, 0x26, 0x57, 0x26, 0x87, 0x26, 0xb7, - 0x26, 0xe8, 0x27, 0x18, 0x27, 0x49, 0x27, 0x7a, 0x27, 0xab, 0x27, 0xdc, - 0x28, 0x0d, 0x28, 0x3f, 0x28, 0x71, 0x28, 0xa2, 0x28, 0xd4, 0x29, 0x06, - 0x29, 0x38, 0x29, 0x6b, 0x29, 0x9d, 0x29, 0xd0, 0x2a, 0x02, 0x2a, 0x35, - 0x2a, 0x68, 0x2a, 0x9b, 0x2a, 0xcf, 0x2b, 0x02, 0x2b, 0x36, 0x2b, 0x69, - 0x2b, 0x9d, 0x2b, 0xd1, 0x2c, 0x05, 0x2c, 0x39, 0x2c, 0x6e, 0x2c, 0xa2, - 0x2c, 0xd7, 0x2d, 0x0c, 0x2d, 0x41, 0x2d, 0x76, 0x2d, 0xab, 0x2d, 0xe1, - 0x2e, 0x16, 0x2e, 0x4c, 0x2e, 0x82, 0x2e, 0xb7, 0x2e, 0xee, 0x2f, 0x24, - 0x2f, 0x5a, 0x2f, 0x91, 0x2f, 0xc7, 0x2f, 0xfe, 0x30, 0x35, 0x30, 0x6c, - 0x30, 0xa4, 0x30, 0xdb, 0x31, 0x12, 0x31, 0x4a, 0x31, 0x82, 0x31, 0xba, - 0x31, 0xf2, 0x32, 0x2a, 0x32, 0x63, 0x32, 0x9b, 0x32, 0xd4, 0x33, 0x0d, - 0x33, 0x46, 0x33, 0x7f, 0x33, 0xb8, 0x33, 0xf1, 0x34, 0x2b, 0x34, 0x65, - 0x34, 0x9e, 0x34, 0xd8, 0x35, 0x13, 0x35, 0x4d, 0x35, 0x87, 0x35, 0xc2, - 0x35, 0xfd, 0x36, 0x37, 0x36, 0x72, 0x36, 0xae, 0x36, 0xe9, 0x37, 0x24, - 0x37, 0x60, 0x37, 0x9c, 0x37, 0xd7, 0x38, 0x14, 0x38, 0x50, 0x38, 0x8c, - 0x38, 0xc8, 0x39, 0x05, 0x39, 0x42, 0x39, 0x7f, 0x39, 0xbc, 0x39, 0xf9, - 0x3a, 0x36, 0x3a, 0x74, 0x3a, 0xb2, 0x3a, 0xef, 0x3b, 0x2d, 0x3b, 0x6b, - 0x3b, 0xaa, 0x3b, 0xe8, 0x3c, 0x27, 0x3c, 0x65, 0x3c, 0xa4, 0x3c, 0xe3, - 0x3d, 0x22, 0x3d, 0x61, 0x3d, 0xa1, 0x3d, 0xe0, 0x3e, 0x20, 0x3e, 0x60, - 0x3e, 0xa0, 0x3e, 0xe0, 0x3f, 0x21, 0x3f, 0x61, 0x3f, 0xa2, 0x3f, 0xe2, - 0x40, 0x23, 0x40, 0x64, 0x40, 0xa6, 0x40, 0xe7, 0x41, 0x29, 0x41, 0x6a, - 0x41, 0xac, 0x41, 0xee, 0x42, 0x30, 0x42, 0x72, 0x42, 0xb5, 0x42, 0xf7, - 0x43, 0x3a, 0x43, 0x7d, 0x43, 0xc0, 0x44, 0x03, 0x44, 0x47, 0x44, 0x8a, - 0x44, 0xce, 0x45, 0x12, 0x45, 0x55, 0x45, 0x9a, 0x45, 0xde, 0x46, 0x22, - 0x46, 0x67, 0x46, 0xab, 0x46, 0xf0, 0x47, 0x35, 0x47, 0x7b, 0x47, 0xc0, - 0x48, 0x05, 0x48, 0x4b, 0x48, 0x91, 0x48, 0xd7, 0x49, 0x1d, 0x49, 0x63, - 0x49, 0xa9, 0x49, 0xf0, 0x4a, 0x37, 0x4a, 0x7d, 0x4a, 0xc4, 0x4b, 0x0c, - 0x4b, 0x53, 0x4b, 0x9a, 0x4b, 0xe2, 0x4c, 0x2a, 0x4c, 0x72, 0x4c, 0xba, - 0x4d, 0x02, 0x4d, 0x4a, 0x4d, 0x93, 0x4d, 0xdc, 0x4e, 0x25, 0x4e, 0x6e, - 0x4e, 0xb7, 0x4f, 0x00, 0x4f, 0x49, 0x4f, 0x93, 0x4f, 0xdd, 0x50, 0x27, - 0x50, 0x71, 0x50, 0xbb, 0x51, 0x06, 0x51, 0x50, 0x51, 0x9b, 0x51, 0xe6, - 0x52, 0x31, 0x52, 0x7c, 0x52, 0xc7, 0x53, 0x13, 0x53, 0x5f, 0x53, 0xaa, - 0x53, 0xf6, 0x54, 0x42, 0x54, 0x8f, 0x54, 0xdb, 0x55, 0x28, 0x55, 0x75, - 0x55, 0xc2, 0x56, 0x0f, 0x56, 0x5c, 0x56, 0xa9, 0x56, 0xf7, 0x57, 0x44, - 0x57, 0x92, 0x57, 0xe0, 0x58, 0x2f, 0x58, 0x7d, 0x58, 0xcb, 0x59, 0x1a, - 0x59, 0x69, 0x59, 0xb8, 0x5a, 0x07, 0x5a, 0x56, 0x5a, 0xa6, 0x5a, 0xf5, - 0x5b, 0x45, 0x5b, 0x95, 0x5b, 0xe5, 0x5c, 0x35, 0x5c, 0x86, 0x5c, 0xd6, - 0x5d, 0x27, 0x5d, 0x78, 0x5d, 0xc9, 0x5e, 0x1a, 0x5e, 0x6c, 0x5e, 0xbd, - 0x5f, 0x0f, 0x5f, 0x61, 0x5f, 0xb3, 0x60, 0x05, 0x60, 0x57, 0x60, 0xaa, - 0x60, 0xfc, 0x61, 0x4f, 0x61, 0xa2, 0x61, 0xf5, 0x62, 0x49, 0x62, 0x9c, - 0x62, 0xf0, 0x63, 0x43, 0x63, 0x97, 0x63, 0xeb, 0x64, 0x40, 0x64, 0x94, - 0x64, 0xe9, 0x65, 0x3d, 0x65, 0x92, 0x65, 0xe7, 0x66, 0x3d, 0x66, 0x92, - 0x66, 0xe8, 0x67, 0x3d, 0x67, 0x93, 0x67, 0xe9, 0x68, 0x3f, 0x68, 0x96, - 0x68, 0xec, 0x69, 0x43, 0x69, 0x9a, 0x69, 0xf1, 0x6a, 0x48, 0x6a, 0x9f, - 0x6a, 0xf7, 0x6b, 0x4f, 0x6b, 0xa7, 0x6b, 0xff, 0x6c, 0x57, 0x6c, 0xaf, - 0x6d, 0x08, 0x6d, 0x60, 0x6d, 0xb9, 0x6e, 0x12, 0x6e, 0x6b, 0x6e, 0xc4, - 0x6f, 0x1e, 0x6f, 0x78, 0x6f, 0xd1, 0x70, 0x2b, 0x70, 0x86, 0x70, 0xe0, - 0x71, 0x3a, 0x71, 0x95, 0x71, 0xf0, 0x72, 0x4b, 0x72, 0xa6, 0x73, 0x01, - 0x73, 0x5d, 0x73, 0xb8, 0x74, 0x14, 0x74, 0x70, 0x74, 0xcc, 0x75, 0x28, - 0x75, 0x85, 0x75, 0xe1, 0x76, 0x3e, 0x76, 0x9b, 0x76, 0xf8, 0x77, 0x56, - 0x77, 0xb3, 0x78, 0x11, 0x78, 0x6e, 0x78, 0xcc, 0x79, 0x2a, 0x79, 0x89, - 0x79, 0xe7, 0x7a, 0x46, 0x7a, 0xa5, 0x7b, 0x04, 0x7b, 0x63, 0x7b, 0xc2, - 0x7c, 0x21, 0x7c, 0x81, 0x7c, 0xe1, 0x7d, 0x41, 0x7d, 0xa1, 0x7e, 0x01, - 0x7e, 0x62, 0x7e, 0xc2, 0x7f, 0x23, 0x7f, 0x84, 0x7f, 0xe5, 0x80, 0x47, - 0x80, 0xa8, 0x81, 0x0a, 0x81, 0x6b, 0x81, 0xcd, 0x82, 0x30, 0x82, 0x92, - 0x82, 0xf4, 0x83, 0x57, 0x83, 0xba, 0x84, 0x1d, 0x84, 0x80, 0x84, 0xe3, - 0x85, 0x47, 0x85, 0xab, 0x86, 0x0e, 0x86, 0x72, 0x86, 0xd7, 0x87, 0x3b, - 0x87, 0x9f, 0x88, 0x04, 0x88, 0x69, 0x88, 0xce, 0x89, 0x33, 0x89, 0x99, - 0x89, 0xfe, 0x8a, 0x64, 0x8a, 0xca, 0x8b, 0x30, 0x8b, 0x96, 0x8b, 0xfc, - 0x8c, 0x63, 0x8c, 0xca, 0x8d, 0x31, 0x8d, 0x98, 0x8d, 0xff, 0x8e, 0x66, - 0x8e, 0xce, 0x8f, 0x36, 0x8f, 0x9e, 0x90, 0x06, 0x90, 0x6e, 0x90, 0xd6, - 0x91, 0x3f, 0x91, 0xa8, 0x92, 0x11, 0x92, 0x7a, 0x92, 0xe3, 0x93, 0x4d, - 0x93, 0xb6, 0x94, 0x20, 0x94, 0x8a, 0x94, 0xf4, 0x95, 0x5f, 0x95, 0xc9, - 0x96, 0x34, 0x96, 0x9f, 0x97, 0x0a, 0x97, 0x75, 0x97, 0xe0, 0x98, 0x4c, - 0x98, 0xb8, 0x99, 0x24, 0x99, 0x90, 0x99, 0xfc, 0x9a, 0x68, 0x9a, 0xd5, - 0x9b, 0x42, 0x9b, 0xaf, 0x9c, 0x1c, 0x9c, 0x89, 0x9c, 0xf7, 0x9d, 0x64, - 0x9d, 0xd2, 0x9e, 0x40, 0x9e, 0xae, 0x9f, 0x1d, 0x9f, 0x8b, 0x9f, 0xfa, - 0xa0, 0x69, 0xa0, 0xd8, 0xa1, 0x47, 0xa1, 0xb6, 0xa2, 0x26, 0xa2, 0x96, - 0xa3, 0x06, 0xa3, 0x76, 0xa3, 0xe6, 0xa4, 0x56, 0xa4, 0xc7, 0xa5, 0x38, - 0xa5, 0xa9, 0xa6, 0x1a, 0xa6, 0x8b, 0xa6, 0xfd, 0xa7, 0x6e, 0xa7, 0xe0, - 0xa8, 0x52, 0xa8, 0xc4, 0xa9, 0x37, 0xa9, 0xa9, 0xaa, 0x1c, 0xaa, 0x8f, - 0xab, 0x02, 0xab, 0x75, 0xab, 0xe9, 0xac, 0x5c, 0xac, 0xd0, 0xad, 0x44, - 0xad, 0xb8, 0xae, 0x2d, 0xae, 0xa1, 0xaf, 0x16, 0xaf, 0x8b, 0xb0, 0x00, - 0xb0, 0x75, 0xb0, 0xea, 0xb1, 0x60, 0xb1, 0xd6, 0xb2, 0x4b, 0xb2, 0xc2, - 0xb3, 0x38, 0xb3, 0xae, 0xb4, 0x25, 0xb4, 0x9c, 0xb5, 0x13, 0xb5, 0x8a, - 0xb6, 0x01, 0xb6, 0x79, 0xb6, 0xf0, 0xb7, 0x68, 0xb7, 0xe0, 0xb8, 0x59, - 0xb8, 0xd1, 0xb9, 0x4a, 0xb9, 0xc2, 0xba, 0x3b, 0xba, 0xb5, 0xbb, 0x2e, - 0xbb, 0xa7, 0xbc, 0x21, 0xbc, 0x9b, 0xbd, 0x15, 0xbd, 0x8f, 0xbe, 0x0a, - 0xbe, 0x84, 0xbe, 0xff, 0xbf, 0x7a, 0xbf, 0xf5, 0xc0, 0x70, 0xc0, 0xec, - 0xc1, 0x67, 0xc1, 0xe3, 0xc2, 0x5f, 0xc2, 0xdb, 0xc3, 0x58, 0xc3, 0xd4, - 0xc4, 0x51, 0xc4, 0xce, 0xc5, 0x4b, 0xc5, 0xc8, 0xc6, 0x46, 0xc6, 0xc3, - 0xc7, 0x41, 0xc7, 0xbf, 0xc8, 0x3d, 0xc8, 0xbc, 0xc9, 0x3a, 0xc9, 0xb9, - 0xca, 0x38, 0xca, 0xb7, 0xcb, 0x36, 0xcb, 0xb6, 0xcc, 0x35, 0xcc, 0xb5, - 0xcd, 0x35, 0xcd, 0xb5, 0xce, 0x36, 0xce, 0xb6, 0xcf, 0x37, 0xcf, 0xb8, - 0xd0, 0x39, 0xd0, 0xba, 0xd1, 0x3c, 0xd1, 0xbe, 0xd2, 0x3f, 0xd2, 0xc1, - 0xd3, 0x44, 0xd3, 0xc6, 0xd4, 0x49, 0xd4, 0xcb, 0xd5, 0x4e, 0xd5, 0xd1, - 0xd6, 0x55, 0xd6, 0xd8, 0xd7, 0x5c, 0xd7, 0xe0, 0xd8, 0x64, 0xd8, 0xe8, - 0xd9, 0x6c, 0xd9, 0xf1, 0xda, 0x76, 0xda, 0xfb, 0xdb, 0x80, 0xdc, 0x05, - 0xdc, 0x8a, 0xdd, 0x10, 0xdd, 0x96, 0xde, 0x1c, 0xde, 0xa2, 0xdf, 0x29, - 0xdf, 0xaf, 0xe0, 0x36, 0xe0, 0xbd, 0xe1, 0x44, 0xe1, 0xcc, 0xe2, 0x53, - 0xe2, 0xdb, 0xe3, 0x63, 0xe3, 0xeb, 0xe4, 0x73, 0xe4, 0xfc, 0xe5, 0x84, - 0xe6, 0x0d, 0xe6, 0x96, 0xe7, 0x1f, 0xe7, 0xa9, 0xe8, 0x32, 0xe8, 0xbc, - 0xe9, 0x46, 0xe9, 0xd0, 0xea, 0x5b, 0xea, 0xe5, 0xeb, 0x70, 0xeb, 0xfb, - 0xec, 0x86, 0xed, 0x11, 0xed, 0x9c, 0xee, 0x28, 0xee, 0xb4, 0xef, 0x40, - 0xef, 0xcc, 0xf0, 0x58, 0xf0, 0xe5, 0xf1, 0x72, 0xf1, 0xff, 0xf2, 0x8c, - 0xf3, 0x19, 0xf3, 0xa7, 0xf4, 0x34, 0xf4, 0xc2, 0xf5, 0x50, 0xf5, 0xde, - 0xf6, 0x6d, 0xf6, 0xfb, 0xf7, 0x8a, 0xf8, 0x19, 0xf8, 0xa8, 0xf9, 0x38, - 0xf9, 0xc7, 0xfa, 0x57, 0xfa, 0xe7, 0xfb, 0x77, 0xfc, 0x07, 0xfc, 0x98, - 0xfd, 0x29, 0xfd, 0xba, 0xfe, 0x4b, 0xfe, 0xdc, 0xff, 0x6d, 0xff, 0xff, -}; - -static const char kSRGBPara[] = { - // sRGB profile with parametric gamma curves. - 0x00, 0x00, 0x02, 0x54, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, 0x20, 0x58, 0x59, 0x5a, 0x20, - 0x07, 0xe0, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x09, 0x00, 0x26, 0x00, 0x1c, - 0x61, 0x63, 0x73, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x4f, 0x4f, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xd6, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x2d, 0x47, 0x4f, 0x4f, 0x47, - 0x75, 0xe1, 0xa6, 0xb1, 0x3c, 0x34, 0x37, 0x63, 0x10, 0xc8, 0xab, 0x66, - 0x06, 0x32, 0xa2, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x40, - 0x63, 0x70, 0x72, 0x74, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x00, 0x5a, - 0x77, 0x74, 0x70, 0x74, 0x00, 0x00, 0x01, 0xa4, 0x00, 0x00, 0x00, 0x14, - 0x62, 0x6b, 0x70, 0x74, 0x00, 0x00, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x14, - 0x72, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x14, - 0x67, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x14, - 0x62, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, 0xf4, 0x00, 0x00, 0x00, 0x14, - 0x72, 0x54, 0x52, 0x43, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x20, - 0x63, 0x68, 0x61, 0x64, 0x00, 0x00, 0x02, 0x28, 0x00, 0x00, 0x00, 0x2c, - 0x62, 0x54, 0x52, 0x43, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x20, - 0x67, 0x54, 0x52, 0x43, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x20, - 0x6d, 0x6c, 0x75, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x0c, 0x65, 0x6e, 0x55, 0x53, 0x00, 0x00, 0x00, 0x24, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x73, 0x00, 0x52, 0x00, 0x47, 0x00, 0x42, - 0x00, 0x20, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x36, 0x00, 0x31, - 0x00, 0x39, 0x00, 0x36, 0x00, 0x36, 0x00, 0x2d, 0x00, 0x32, 0x00, 0x2e, - 0x00, 0x31, 0x00, 0x00, 0x6d, 0x6c, 0x75, 0x63, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x65, 0x6e, 0x55, 0x53, - 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x43, 0x00, 0x6f, - 0x00, 0x70, 0x00, 0x79, 0x00, 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, - 0x00, 0x74, 0x00, 0x20, 0x00, 0x28, 0x00, 0x63, 0x00, 0x29, 0x00, 0x20, - 0x00, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, 0x36, 0x00, 0x20, 0x00, 0x47, - 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x67, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x20, - 0x00, 0x49, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, - 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x51, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0xcc, 0x58, 0x59, 0x5a, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x6f, 0xa0, 0x00, 0x00, 0x38, 0xf5, 0x00, 0x00, 0x03, 0x90, - 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x97, - 0x00, 0x00, 0xb7, 0x87, 0x00, 0x00, 0x18, 0xd9, 0x58, 0x59, 0x5a, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x9f, 0x00, 0x00, 0x0f, 0x84, - 0x00, 0x00, 0xb6, 0xc3, 0x70, 0x61, 0x72, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x66, 0x66, 0x00, 0x00, 0xf2, 0xa7, - 0x00, 0x00, 0x0d, 0x59, 0x00, 0x00, 0x13, 0xd0, 0x00, 0x00, 0x0a, 0x5b, - 0x73, 0x66, 0x33, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x42, - 0x00, 0x00, 0x05, 0xde, 0xff, 0xff, 0xf3, 0x27, 0x00, 0x00, 0x07, 0x93, - 0x00, 0x00, 0xfd, 0x90, 0xff, 0xff, 0xfb, 0xa3, 0xff, 0xff, 0xfd, 0xa4, - 0x00, 0x00, 0x03, 0xdc, 0x00, 0x00, 0xc0, 0x6e, -}; - -static const char kAdobeData[] = { - // Adobe 1998 profile with gamma 2.2 curves. - 0x00, 0x00, 0x02, 0x30, 0x41, 0x44, 0x42, 0x45, 0x02, 0x10, 0x00, 0x00, - 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, 0x20, 0x58, 0x59, 0x5a, 0x20, - 0x07, 0xd0, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x33, 0x00, 0x3b, - 0x61, 0x63, 0x73, 0x70, 0x41, 0x50, 0x50, 0x4c, 0x00, 0x00, 0x00, 0x00, - 0x6e, 0x6f, 0x6e, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xd6, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x2d, 0x41, 0x44, 0x42, 0x45, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0x63, 0x70, 0x72, 0x74, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x32, - 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00, 0x00, 0x6b, - 0x77, 0x74, 0x70, 0x74, 0x00, 0x00, 0x01, 0x9c, 0x00, 0x00, 0x00, 0x14, - 0x62, 0x6b, 0x70, 0x74, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x14, - 0x72, 0x54, 0x52, 0x43, 0x00, 0x00, 0x01, 0xc4, 0x00, 0x00, 0x00, 0x0e, - 0x67, 0x54, 0x52, 0x43, 0x00, 0x00, 0x01, 0xd4, 0x00, 0x00, 0x00, 0x0e, - 0x62, 0x54, 0x52, 0x43, 0x00, 0x00, 0x01, 0xe4, 0x00, 0x00, 0x00, 0x0e, - 0x72, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, 0xf4, 0x00, 0x00, 0x00, 0x14, - 0x67, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x14, - 0x62, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x14, - 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x43, 0x6f, 0x70, 0x79, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x32, 0x30, 0x30, 0x30, 0x20, 0x41, - 0x64, 0x6f, 0x62, 0x65, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, - 0x20, 0x49, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, 0x52, 0x47, - 0x42, 0x20, 0x28, 0x31, 0x39, 0x39, 0x38, 0x29, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf3, 0x51, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0xcc, - 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x75, 0x72, 0x76, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x33, 0x00, 0x00, - 0x63, 0x75, 0x72, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x33, 0x00, 0x00, 0x63, 0x75, 0x72, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x02, 0x33, 0x00, 0x00, 0x58, 0x59, 0x5a, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x18, 0x00, 0x00, 0x4f, 0xa5, - 0x00, 0x00, 0x04, 0xfc, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x34, 0x8d, 0x00, 0x00, 0xa0, 0x2c, 0x00, 0x00, 0x0f, 0x95, - 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x31, - 0x00, 0x00, 0x10, 0x2f, 0x00, 0x00, 0xbe, 0x9c, -}; - -#endif // TESTING_LIBFUZZER_FUZZERS_COLOR_SPACE_DATA_H diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/0b145b6957b72692af59e042237e721ad95d78bd b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/0b145b6957b72692af59e042237e721ad95d78bd deleted file mode 100644 index b34aad3cbd5..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/0b145b6957b72692af59e042237e721ad95d78bd +++ /dev/null @@ -1 +0,0 @@ -default-src 'self' http://example.com http://example.net; connect-src 'none'
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/0b31563fafdfc0c341e009146c675ca1529ebcf6 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/0b31563fafdfc0c341e009146c675ca1529ebcf6 deleted file mode 100644 index b017f492319..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/0b31563fafdfc0c341e009146c675ca1529ebcf6 +++ /dev/null @@ -1 +0,0 @@ -default-src 'self'
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/15f7f8a22167427fa124e02a363bb2abd95bb984 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/15f7f8a22167427fa124e02a363bb2abd95bb984 deleted file mode 100644 index de485a69cb8..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/15f7f8a22167427fa124e02a363bb2abd95bb984 +++ /dev/null @@ -1 +0,0 @@ -manifest-src https://example.com/
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/1687520959ffc7da61ffeb387502010f70eff929 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/1687520959ffc7da61ffeb387502010f70eff929 deleted file mode 100644 index e38f6e85492..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/1687520959ffc7da61ffeb387502010f70eff929 +++ /dev/null @@ -1 +0,0 @@ -default-src 'self'; report-uri https://endpoint.com; report-to groupname
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/1cf4adfef4b1deaf529c8181d3e0f9abd03e72cd b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/1cf4adfef4b1deaf529c8181d3e0f9abd03e72cd deleted file mode 100644 index c1cea24c01c..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/1cf4adfef4b1deaf529c8181d3e0f9abd03e72cd +++ /dev/null @@ -1 +0,0 @@ -default-src 'self'; script-src https://example.com
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/20747af2b2ef5724b5a00498ed626d5374d0bcd8 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/20747af2b2ef5724b5a00498ed626d5374d0bcd8 deleted file mode 100644 index 7012b083468..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/20747af2b2ef5724b5a00498ed626d5374d0bcd8 +++ /dev/null @@ -1 +0,0 @@ -worker-src https://example.com/
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/241c2f621b4b7dfceabc2789257966277c39af68 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/241c2f621b4b7dfceabc2789257966277c39af68 deleted file mode 100644 index d1361458326..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/241c2f621b4b7dfceabc2789257966277c39af68 +++ /dev/null @@ -1 +0,0 @@ -connect-src https://example.com/
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/2907dfcc21d9f90a1d5cbcdc70049f685a0d0ced b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/2907dfcc21d9f90a1d5cbcdc70049f685a0d0ced deleted file mode 100644 index f3e2e3afd14..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/2907dfcc21d9f90a1d5cbcdc70049f685a0d0ced +++ /dev/null @@ -1 +0,0 @@ -child-src https://example.com/
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/53afb7330f338fe63aba317a51c09ac4ff98812a b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/53afb7330f338fe63aba317a51c09ac4ff98812a deleted file mode 100644 index 1ff2d9ef116..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/53afb7330f338fe63aba317a51c09ac4ff98812a +++ /dev/null @@ -1 +0,0 @@ -script-src 'unsafe-hashed-attributes' 'sha256-jzgBGA4UWFFmpOBq0JpdsySukE1FrEN5bUpoK8Z29fY='
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/5a08e5c15251a31d4b619a93f6e5209136ed21c7 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/5a08e5c15251a31d4b619a93f6e5209136ed21c7 deleted file mode 100644 index d4d1b943272..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/5a08e5c15251a31d4b619a93f6e5209136ed21c7 +++ /dev/null @@ -1 +0,0 @@ -connect-src 'self'; font-src 'self'; frame-src 'self'; img-src 'self'; manifest-src 'self'; media-src 'self'; object-src 'self'; script-src https://example.com; style-src 'self'; worker-src 'self'
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/658cb7c8e0158a23ba697d074ca29dc02b4ffded b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/658cb7c8e0158a23ba697d074ca29dc02b4ffded deleted file mode 100644 index 4433e587962..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/658cb7c8e0158a23ba697d074ca29dc02b4ffded +++ /dev/null @@ -1 +0,0 @@ -plugin-types application/x-shockwave-flash
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/783e3db56e3fe13ad0a2f1639b499aac76953025 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/783e3db56e3fe13ad0a2f1639b499aac76953025 deleted file mode 100644 index 7b540e8eacd..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/783e3db56e3fe13ad0a2f1639b499aac76953025 +++ /dev/null @@ -1 +0,0 @@ -frame-src https://example.com/
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/7a9145355094859b90d8f78eaeec6218aa23ac37 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/7a9145355094859b90d8f78eaeec6218aa23ac37 deleted file mode 100644 index 8a61baa4e1d..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/7a9145355094859b90d8f78eaeec6218aa23ac37 +++ /dev/null @@ -1 +0,0 @@ -script-src https://cdn.example.com/scripts/; object-src 'none'
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/8ba24866fbd53a3ac2eb2074d1dba842d782d14b b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/8ba24866fbd53a3ac2eb2074d1dba842d782d14b deleted file mode 100644 index 509a1ef7f7e..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/8ba24866fbd53a3ac2eb2074d1dba842d782d14b +++ /dev/null @@ -1 +0,0 @@ -img-src https://example.com/
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/8fe7d082ef321c9de3f672f4befd511d68e4f2c9 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/8fe7d082ef321c9de3f672f4befd511d68e4f2c9 deleted file mode 100644 index 0bf35017aa1..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/8fe7d082ef321c9de3f672f4befd511d68e4f2c9 +++ /dev/null @@ -1 +0,0 @@ -font-src https://example.com/
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/9e47bee5ac22ec0b11d3350e070c5532a4188902 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/9e47bee5ac22ec0b11d3350e070c5532a4188902 deleted file mode 100644 index 63dd7b21ea8..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/9e47bee5ac22ec0b11d3350e070c5532a4188902 +++ /dev/null @@ -1 +0,0 @@ -script-src 'self'; report-to csp-reporting-endpoint
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/c05ca2448e645b6adcb21b20f57eb3204750e91b b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/c05ca2448e645b6adcb21b20f57eb3204750e91b deleted file mode 100644 index 8665e593ccc..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/c05ca2448e645b6adcb21b20f57eb3204750e91b +++ /dev/null @@ -1 +0,0 @@ -media-src https://example.com/
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/c0d80054a4244bd0536fdcd123447e4ae95360ff b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/c0d80054a4244bd0536fdcd123447e4ae95360ff deleted file mode 100644 index cd36aa66a03..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/c0d80054a4244bd0536fdcd123447e4ae95360ff +++ /dev/null @@ -1 +0,0 @@ -plugin-types application/pdf
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/d0e31c2ad95989078ccf381a91492631fc197160 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/d0e31c2ad95989078ccf381a91492631fc197160 deleted file mode 100644 index 4fe695d429e..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/d0e31c2ad95989078ccf381a91492631fc197160 +++ /dev/null @@ -1 +0,0 @@ -script-src 'nonce-abcdefg' 'strict-dynamic'
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/d6e5a37c382a8a78ddf8c262bdb5466b56f25e21 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/d6e5a37c382a8a78ddf8c262bdb5466b56f25e21 deleted file mode 100644 index 066449849d6..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/d6e5a37c382a8a78ddf8c262bdb5466b56f25e21 +++ /dev/null @@ -1 +0,0 @@ -connect-src http://example.com; script-src http://example.com
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/df5f63d6a41ebb5f363da2c75e195f6a0678c570 b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/df5f63d6a41ebb5f363da2c75e195f6a0678c570 deleted file mode 100644 index 61f45cc6b32..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/df5f63d6a41ebb5f363da2c75e195f6a0678c570 +++ /dev/null @@ -1 +0,0 @@ -connect-src 'self'; font-src 'self'; frame-src 'self'; img-src 'self'; manifest-src 'self'; media-src 'self'; object-src 'self'; script-src 'self'; style-src 'self'; worker-src 'self'
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/f2fe23eeedceaf03ea2881c35b136a5568b0a4cb b/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/f2fe23eeedceaf03ea2881c35b136a5568b0a4cb deleted file mode 100644 index 5b6df3d14a3..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/content_security_policy_corpus/f2fe23eeedceaf03ea2881c35b136a5568b0a4cb +++ /dev/null @@ -1 +0,0 @@ -object-src https://example.com/
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/convert_woff2ttf_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/convert_woff2ttf_fuzzer.cc deleted file mode 100644 index f54b6fb283c..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/convert_woff2ttf_fuzzer.cc +++ /dev/null @@ -1,17 +0,0 @@ -// 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. - -#include <stddef.h> -#include <stdint.h> - -#include <woff2/decode.h> - -// Entry point for LibFuzzer. -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - std::string buf; - woff2::WOFF2StringOut out(&buf); - out.SetMaxSize(30 * 1024 * 1024); - woff2::ConvertWOFF2ToTTF(data, size, &out); - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/courgette_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/courgette_fuzzer.cc deleted file mode 100644 index ec61ee702e9..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/courgette_fuzzer.cc +++ /dev/null @@ -1,22 +0,0 @@ -// 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. - -#include <stddef.h> -#include <stdint.h> - -#include "courgette/courgette.h" -#include "courgette/courgette_flow.h" -#include "courgette/region.h" - -// Entry point for LibFuzzer. -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - courgette::CourgetteFlow flow; - courgette::RegionBuffer buffer(courgette::Region(data, size)); - flow.ReadDisassemblerFromBuffer(flow.ONLY, buffer); - flow.CreateAssemblyProgramFromDisassembler(flow.ONLY, false); - flow.CreateEncodedProgramFromDisassemblerAndAssemblyProgram(flow.ONLY); - flow.WriteSinkStreamSetFromEncodedProgram(flow.ONLY); - // Not bothering to check |flow.failed()|. - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/content_security_policy.dict b/chromium/testing/libfuzzer/fuzzers/dicts/content_security_policy.dict deleted file mode 100644 index 32a0ad272bb..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/content_security_policy.dict +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright 2016 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. - -" " -"," -";" -"self" -"//" -"*" -"www" -".example.com" -":443" -"/path/to/resource" -"'none'" -"'self'" -"'strict-dynamic'" -"'unsafe-inline'" -"'unsafe-eval'" -"data:" -"blob:" -"filesystem:" -"http:" -"https:" -"allow-forms" -"allow-scripts" -"base-uri" -"block-all-mixed-content" -"child-src" -"connect-src" -"default-src" -"font-src" -"form-action" -"frame-ancestors" -"frame-src" -"img-src" -"manifest-src" -"media-src" -"object-src" -"plugin-types" -"report-to" -"report-uri" -"require-sri-for" -"sandbox" -"script-src" -"style-src" -"treat-as-public-address" -"upgrade-insecure-requests" -"application/octet-stream" diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/feature_policy.dict b/chromium/testing/libfuzzer/fuzzers/dicts/feature_policy.dict deleted file mode 100644 index de7638516e3..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/feature_policy.dict +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2016 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. - -"\"cookie\"" -"\"domain\"" -"\"docwrite\"" -"\"geolocation\"" -"\"midi\"" -"\"notifications\"" -"\"payment\"" -"\"push\"" -"\"sync-script\"" -"\"sync-xhr\"" -"\"usermedia\"" -"\"vibrate\"" -"\"webrtc\"" -"\"https://example.com/\"" -"*" -"\"self\"" diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/generated/javascript.dict b/chromium/testing/libfuzzer/fuzzers/dicts/generated/javascript.dict deleted file mode 100644 index b4d536cad0d..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/generated/javascript.dict +++ /dev/null @@ -1,1656 +0,0 @@ -# -# AFL dictionary for JavaScript -# ----------------------------- -# -# Contains basic reserved keywords and syntax building blocks. -# -# Created by Michal Zalewski <lcamtuf@google.com> -# - -keyword_arguments="arguments" -keyword_break="break" -keyword_case="case" -keyword_catch="catch" -keyword_const="const" -keyword_continue="continue" -keyword_debugger="debugger" -keyword_decodeURI="decodeURI" -keyword_default="default" -keyword_delete="delete" -keyword_do="do" -keyword_else="else" -keyword_escape="escape" -keyword_eval="eval" -keyword_export="export" -keyword_finally="finally" -keyword_for="for (a=0;a<2;a++)" -keyword_function="function" -keyword_if="if" -keyword_in="in" -keyword_instanceof="instanceof" -keyword_isNaN="isNaN" -keyword_let="let" -keyword_new="new" -keyword_parseInt="parseInt" -keyword_return="return" -keyword_super="super" -keyword_switch="switch" -keyword_this="this" -keyword_throw="throw" -keyword_try="try" -keyword_typeof="typeof" -keyword_var="var" -keyword_void="void" -keyword_while="while" -keyword_with="with" - -misc_1=" 1" -misc_a="a" -misc_array=" [1]" -misc_assign=" a=1" -misc_code_block=" {1}" -misc_colon_num=" 1:" -misc_colon_string=" 'a':" -misc_comma=" ," -misc_comment_block=" /* */" -misc_comment_line=" //" -misc_cond=" 1?2:3" -misc_dec=" --" -misc_div=" /" -misc_equals=" =" -misc_fn=" a()" -misc_identical=" ===" -misc_inc=" ++" -misc_minus=" -" -misc_modulo=" %" -misc_parentheses=" ()" -misc_parentheses_1=" (1)" -misc_parentheses_1x4=" (1,1,1,1)" -misc_parentheses_a=" (a)" -misc_period="." -misc_plus=" +" -misc_plus_assign=" +=" -misc_regex=" /a/g" -misc_rol=" <<<" -misc_semicolon=" ;" -misc_serialized_object=" {'a': 1}" -misc_string=" 'a'" -misc_unicode=" '\\u0001'" -misc_shl=" <<" -misc_shr=" >>" -misc_sae=" >>>" -misc_bit_or=" |" -misc_bit_and=" &" -misc_bit_xor=" ^" -misc_bit_not=" ~" - -object_Array=" Array" -object_Boolean=" Boolean" -object_Date=" Date" -object_Function=" Function" -object_Infinity=" Infinity" -object_Int8Array=" Int8Array" -object_Math=" Math" -object_NaN=" NaN" -object_Number=" Number" -object_Object=" Object" -object_RegExp=" RegExp" -object_String=" String" -object_Symbol=" Symbol" -object_false=" false" -object_null=" null" -object_true=" true" - -prop_charAt=".charAt" -prop_concat=".concat" -prop_constructor=".constructor" -prop_destructor=".destructor" -prop_length=".length" -prop_match=".match" -prop_proto=".__proto__" -prop_prototype=".prototype" -prop_slice=".slice" -prop_toCode=".toCode" -prop_toString=".toString" -prop_valueOf=".valueOf" - - -# This part has been generated with testing/libfuzzer/dictionary_generator.py -# using v8_script_parser_fuzzer binary and ECMA-262 standard 6.0. -"all" -"ECMA-404." -"contexts." -"Date.prototype.setHours" -"IsConstructor" -"forbidden" -"dynamic" -"month" -"(exclusive)" -"(OOPSLA" -"arguments)" -"consists" -"expressions" -"(which" -"(in" -"WeakSet" -"whose" -"iterator" -"PATENT" -"(for" -"equivalence" -"including" -"to" -"tail" -"program" -"under" -"immutable" -"started" -"@" -"digit" -"returned" -"very" -"activation" -"'UA-32577963-1']);" -"Classes" -"every" -"updates" -"U+200C" -"(URI):" -"condition" -"(QUOTATION" -"exponential" -"Reference" -"EXPRESS" -"list" -"prefix" -"non-extensible" -"large" -"INDIRECT," -"NY," -"enclosing" -"small" -"abbreviated" -"built-in" -"range." -"BUSINESS" -"C++," -"translating" -"surrounding" -"second" -"Version" -"pass" -"UTF-8." -"invariant" -"(LINE" -"implemented" -"INFRINGE" -"Z." -"Latin" -"incompatible" -"section" -"selected" -"supplied" -"decoding" -"version" -"run" -"above" -"Int8Array" -"method" -"\"BSD" -"full" -"escaping" -"Undefined" -"compilation" -"never" -"component" -"here" -"ranges" -"reported" -"U+007D" -"operations." -"active" -"path" -"placeholder" -"8601:2004(E)" -"search" -"White_Space" -"U+10FFFF," -"changed" -"allows" -"(see" -"SOLIDUS)" -"prior" -"real" -"successors" -"error," -"error." -"proxy" -"prints" -"via" -"shorthand" -"divide" -"replace" -"Object.defineProperties" -"Instance" -"TO" -"S," -"SUCH" -"total" -"unit" -"languages" -"executable" -"takes" -"would" -"U+003A" -"contains" -"negative" -"URI;" -"call" -"JTC" -"6" -"type" -"until" -"more" -"Date.prototype.setMinutes" -"GOODS" -"EXEMPLARY," -"expose" -"SIGN)" -"flag" -"U+000A" -"V" -"Representation" -"Alphabetic" -"hold" -"finalization" -"must" -"Array.prototype" -"PROVIDED" -"none" -"word" -"U+000D" -"hour" -"SV" -"(REVERSE" -"paragraph" -"ms" -"v" -"exceptions" -"COMMA," -"root" -"could" -"defer" -"compare" -"type." -"(with" -"JavaScript" -"states" -"minimum" -"numbers" -"keep" -"SEPARATOR)," -"absolute" -"information" -"end" -"recursive" -"Format" -"provide" -"DataView" -"HOWEVER" -"maps" -"reject" -"Promise" -"IMPLIED" -"<CR>" -"A" -"description" -"binary" -"Arrays" -"typed" -"after" -"variant" -"mapping" -"U+0024" -"hoisting" -"reflect" -"SPECIAL," -"types" -"All" -"short" -"(CHARACTER" -"postfix" -"ID_Start" -"map," -"blocks." -")" -"LICENSING" -"QUOTATION" -"order" -"DAMAGES" -"operations" -"executed" -"interpretation" -"V," -"over" -"NO-BREAK" -"expects" -"through" -"LINE" -"its" -"before" -"byteLength" -"style" -"20" -"(V," -"CreateIterResultObject" -"," -"writing" -"detected" -"verifies" -"SUBSTITUTE" -"might" -"then" -"them" -"skipped" -"combination" -"strings." -"URI" -"number" -"of:" -"nested" -"operation." -"[~U]" -"always" -"decimal" -"Date.prototype.setMonth" -"token" -"API" -"twice." -"arrow" -"each" -"types." -"side" -"(but" -"GetSuperConstructor" -"directly" -"Zone" -"UTC" -"FITNESS" -"numeric" -"expect" -"RegExp" -"loops" -"operation" -"scope)" -"Type" -"Reflect.ownKeys" -"More" -"WILL" -"by" -"mark-up" -"restricted" -"since" -"BMP" -"7" -"newly" -"Super" -"Class" -"Must" -"loop." -"Extension" -"found" -"free" -"standard" -"reason" -"base" -"byteOffset" -"Constructor" -"put" -"Block" -"thrown" -"definition" -"pairs" -"unresolved" -"created" -"starts" -"filter" -"uses" -"assign" -"already" -"features" -">>" -"encoding" -"SYMBOL" -"TC39" -"SameValue" -"primary" -"system" -"Maps" -"Handler" -"done" -"notify" -"another" -"RETURN)," -"SMALL" -"Date.prototype.setSeconds" -"script" -"top" -"least" -"ToString" -"needed" -"SymbolDescriptiveString" -"too" -"statement" -"store" -"passed" -"Language" -"OrdinaryHasInstance" -"Named" -"immediate" -"direct" -"tokens" -"execution." -"BRACKET)." -"translation" -"to:" -"kind" -"Code" -"keyword" -"double" -"enabled" -"zero" -"normalizing" -"Reflect.getOwnPropertyDescriptor" -"(NOTE" -"minus" -"debugging" -"script." -"constructors" -"bitwise" -"randomly" -"UTC," -"Reflect.has" -"initialized" -"U+005D" -"null" -"ARISING" -"UTF-8," -"contents" -"option" -"forced" -"Power" -"-" -"eagerly" -"indexes" -"also" -"internal" -"(LEFT" -"Date.prototype.setYear" -"ARE" -"REGARDING" -"added" -"object" -"most" -"optimized" -"regular" -"rejected" -"letter" -"scripts" -"Date.prototype.setDate" -"The" -"<ZWNJ>" -"brackets" -"flow" -"traditional" -"Single" -"Boolean" -"place" -"parenthesis" -"Native" -"+" -"heuristics" -"radix" -"SyntaxError" -"(N," -"syntax" -"attempts" -"O," -"relation" -"find" -"(COMMA)." -"access" -"(COMMA)," -"parameters" -"THAT" -"HTML" -"8" -"exports" -"dependent" -"account" -"Value" -"(P)" -"ToLength" -"non-integer" -"report" -"during" -"target" -"runs" -"resolve" -"THIS" -"fields" -"bytes" -"remove" -"twice" -"common" -"CET," -"parameter," -"parameter." -"automatic" -"ToObject" -"set" -"reference" -"locale" -"testing" -"<ZWNBSP>" -"Tail" -"are" -"arg" -"hash" -"(CARRIAGE" -"stringify" -"said" -"currently" -"BUT" -"future" -"various" -"OWNERSHIP" -"consecutive" -"conditions" -"available" -"C" -"1))" -"creating" -"missing" -"modify" -"weak" -"zone," -"PROCUREMENT" -"succeed" -"IS\"" -"interface" -"IMPLEMENT" -"AND" -"both" -"c" -"TypeError" -"last" -"SHALL" -"false," -"against" -"became" -"PURPOSE" -"context" -"receiver" -"exceeds" -"(MV)," -"finds" -"WARRANTY" -"point" -"header" -"globals" -"written" -"slots" -"Method" -"iterable" -"Wide" -"Date.prototype.toDateString" -"C," -"format," -"create" -"Processing" -"(SV," -"been" -"accessor" -"Early" -"TORT" -"JSON" -"UTF-16." -"basic" -"expected" -"C0" -"empty" -"Date.prototype.setUTCMilliseconds" -"CLEF)." -"precision" -"N" -"TV," -"assigning" -"exception" -"Date.prototype.setMilliseconds" -"frozen" -"Uint16Array" -"deferred" -"optimization" -"replaced" -"Object.defineProperty" -"error" -"property" -"EVENT" -"loop" -"resolved" -"USE," -"Both" -"is" -"binding" -"it" -"encountered" -"itself" -"[[Handler]]" -"containing" -"U+005F" -"ISO/IEC" -"Boolean.prototype.toString" -"flag." -"make" -"NaN" -"shorter" -"(PARAGRAPH" -"(MV," -"split" -"9" -"AT&T" -"U+005B" -"(TV)" -"used" -"keys" -"assignment" -"LIABILITY," -"NOT" -"levels" -"moving" -"user" -"characters" -"CONDUCT" -"stack" -"normalization" -"early" -"lower" -"surrogate" -"changes" -"ZERO)," -"flags" -"Names" -"y" -"entry" -"the" -"encodeURIComponent" -"ECMA" -"left" -"construct" -"quoted" -"sentence" -"||" -"overflows" -"SERVICES;" -"(F," -"Inherited" -"followed" -"32" -"yet" -"previous" -"tables" -"Assignment" -"LEFT-TO-RIGHT" -"character" -"source" -"n" -"collections" -"found," -"input" -"has" -"remaining" -"..." -"format" -"lexically" -"big" -"(O," -"possible" -"marked" -"integer" -"bit" -"enumerable" -"formal" -"ON" -"d" -"OF" -"ignore" -"steps" -"Date.prototype.toISOString" -"table." -"OR" -"right" -"old" -"Reflect.set" -"<PS>" -"creation" -"back" -"Numeric" -"apply" -"indirect" -"encodeURI" -"sourceText" -"String" -"for" -"notification" -"subclass" -"<LF>" -"track" -"Let" -"eliminate" -"either" -"be" -"<LS>" -"algorithmic" -"Calls" -"processing" -"O" -"step" -"RIGHT-TO-LEFT" -"ToNumber" -"BMP." -"method." -"from" -"Property" -"properties" -"<ZWJ>," -"Abstract" -"Argument" -"range" -"extensions" -"value." -"runtime" -"automatically" -"Common" -"IANA" -"primitive" -"statements" -"constructor." -"garbage" -"CAUSED" -"into" -"within" -"bound" -"ACM" -"parsing" -"Literal" -"Java" -"Reflect.get" -"IsRegExp" -"32-bit" -"U+005C" -"Keys" -"intrinsic" -"support" -"initial" -"handles" -"long" -"ReferenceError" -"RangeError" -"array." -"Variable" -"perform" -"analyze" -"was" -"(i.e." -"form" -"memory" -"failure" -"decodeURIComponent" -"CONTRACT," -"statement." -"objects." -"true" -"objects)" -"Left" -"arrays" -"inside" -"caller" -"maximum" -"...," -"annotations" -"LEFT" -"called" -"constant" -"defined" -"Deseret" -"iterator," -"To" -"single" -"Arguments" -"floating" -"check" -"Map" -"Only" -"no" -"TV" -"binding." -"when" -"Possible" -"invalid" -"A." -"application" -"points" -"Proxy" -"Scripts" -"test" -"Reflect.isExtensible" -"arithmetic" -"node" -"elements" -"update" -"prepared" -"class" -"AT" -"variable" -"structure" -"for-in" -"required" -"modules" -"An" -"NOTE" -"logical" -"time" -"PROFITS;" -"code)" -"requires" -"CreateDataProperty" -"non-writable" -"once" -"code" -"partial" -"FEED)," -"chain" -"FEED)." -"(MUSICAL" -"global" -"existing" -"WIDTH" -"signatures" -"per" -"computation" -"SOLIDUS)," -"U+017F" -"CLEF" -"millisecond" -"aligned" -"U+007B" -"zone" -"default," -"Object" -"environment" -"0" -"Array.prototype.concat" -"stable" -"include" -"resources" -"uninitialized" -"division" -"string" -"LOSS" -"(LATIN" -"(INCLUDING," -"Tagged" -"Keyed" -"P" -"ObjectDefineProperties" -"anonymous" -"entries" -"specific" -"minute" -"level" -"did" -"positions" -"Global" -"EvalError" -"round" -"Canonical" -"prevent" -"CODE" -"HTTP" -"INFORMATION" -"M," -"M." -"object." -"initializer" -"non-strict" -"manipulating" -"Date.prototype.setUTCMinutes" -"index" -"adds" -"appear" -"TO," -"MUSICAL" -"current" -"Float64Array" -"lazily" -"template" -"shared" -";" -"filled" -"body" -"(SOLIDUS)" -"U+2028" -"U+2029" -"Descriptor" -"objects" -"(FORM" -"[" -"UTF-16," -"implicit" -"change" -"convert" -"\"AS" -"shift" -"31" -"Date.prototype.setUTCSeconds" -"queue" -"MV" -"weekday" -"(MV)" -"{" -"Null" -"named" -"tasks" -"GetOwnPropertyKeys" -"extra" -"When" -"Construct" -"modifying" -"Languages" -"names" -"(DIGIT" -"marker" -"Import" -"bindings" -"use" -"additive" -"handled" -"&" -"illegal" -"value," -"value)" -"next" -"few" -"duplicate" -"handler" -"Date.prototype.setUTCFullYear" -"attribute" -"scope" -"String.prototype" -"F" -"Default" -"trail" -"Time" -"cases" -"ID_Continue" -"\"CODE\"," -"NON-JOINER)" -"lowercase" -"RIGHTS" -"ObjectCreate" -"modified" -"MARK" -"descriptor" -"tag" -"values" -"can" -"executor" -"following" -"meet" -"detached" -"F," -"control" -"FTP)" -"reserved" -"stream" -"escapes" -"process" -"lock" -"escaped" -"incremental" -"UTF-8" -"allowed" -"unhandled" -"block." -"for-of" -"requirements" -"UTF-32" -"means" -"write" -"INTERNATIONAL" -"instead" -"WARRANTIES," -"parameter" -"attributes," -"circular" -"map" -"may" -"clone" -"(PLUS" -"collection" -"DISCLAIMS" -"produce" -"preferred" -"Prologue" -"date" -"representations" -"Int16Array" -"data" -"annotation" -"ambiguous" -"USA," -"computations" -"bind" -"lines" -"element" -"q" -"rather" -"block" -"allow" -"representation" -"terminating" -"__proto__" -"(COLON)," -"tagged" -"@@toPrimitive" -"Uint32Array" -"Generator" -"move" -"Use" -"years" -"symbols" -"comma" -"differs" -"INCIDENTAL," -"THE" -"non-zero" -"1" -"(LF)" -"group" -"Rules" -"platform" -"Using" -"main" -"defining" -"<" -"pending" -"Date.prototype.toUTCString" -"non" -"greater" -"views" -"%JSON%" -"(FULL" -"BRACKET)" -"EVEN" -"Extensions" -"subtraction" -"SameValueZero" -"not" -"(P," -"now" -"nor" -"execute" -"name" -"Iterator" -"U+1D11E" -"(LOW" -"unrepresentable" -"trap" -"Eliminating" -"identifier" -"|" -"subset" -"(the" -"8," -"Generic" -"non-object" -"U+0000" -"static" -"(HYPHEN-MINUS)" -"year" -"operand" -"U+0008" -"transitions" -"Parameter" -"special" -"out" -"space" -"REQUIRED" -"RegExpExec" -"Set" -"Float32Array" -"Throw" -"index." -"G" -"state" -"column" -"RFC" -"completely" -"Used" -"x" -"IMPLIED," -"byte" -"remainder" -"log" -"DATA," -"backwards" -"unescape" -"language" -"ArrayBuffer" -"@@hasInstance" -"times" -"STRICT" -"length" -"separator" -"isView" -"hexadecimal" -"first" -"clause" -"variables" -"one" -"INTERRUPTION)" -"ISO" -"suspended" -"JOINER)" -"reached" -"array" -"size" -"given" -"Runtime" -"checked" -"CURLY" -"start" -"ordering" -"Symbol" -"Date.prototype.setFullYear" -"Uint8Array" -"grow" -"their" -"SEE" -"2" -"Date" -"TypedArray" -"bits" -"final" -"HasProperty" -"destructuring" -"that" -"completed" -"exactly" -"R" -"closures" -"LETTER" -"variable." -"PDF" -"copy" -"than" -"specify" -"===" -"relative" -"later." -":" -"1;" -"depends" -"accesses" -"WHETHER" -"r" -"were" -"1)" -"accessed" -"GeneratorFunction" -"URIError" -"1," -"ArrayBuffer.prototype.slice" -"result" -"and" -"Executable" -"false" -"NEGLIGENCE" -"explicit" -"argument" -"generalization" -"Field" -"Other" -"Call" -"have" -"String.prototype.charAt" -"any" -"conversion" -"Date.prototype.setUTCMonth" -"min" -"LINE)" -"(no" -"instance" -"which" -"=" -"TRV." -"begin" -"multiple" -"Name" -"normal" -"buffer" -"callable" -"connected" -"comparison" -"inserted" -"pages" -"RIGHT" -"considered" -"request" -"Module" -"Date.prototype.toString" -"OUT" -"Date.prototype.setUTCHours" -"Export" -"ECMA-404" -"STOP)," -"Array" -"}" -"selection" -"text" -"supported" -"POSSIBILITY" -"BRACKET," -"Reflect.setPrototypeOf" -"ECMA-402" -"line" -"Math" -"slot" -"We" -"based" -"(" -"cache" -"3" -"should" -"only" -"unable" -"invocation" -"SEPARATOR)" -"b" -"local" -"WARRANTIES" -"handle" -"get" -"==" -"space," -"HEREIN" -"cannot" -"words" -"progress" -"quantifier" -"interpreted" -"neither" -"secondary" -"closure" -"Right" -"resource" -"upper" -"encounters" -"yield" -"keyed" -"EST," -"Date.prototype.getYear" -"INCLUDING" -"contain" -"Reflect.preventExtensions" -"fixed" -"where" -"view" -"SOFTWARE," -"declared" -"declarations" -"RETURN" -"computed" -"exists" -"we" -"module" -"up" -"writable" -"Source" -"(BACKSPACE)," -"legacy" -"truncating" -"receiver." -"THEORY" -"invoked" -"attribute," -"U+001F" -"pattern" -"lexical" -"label" -"outside" -"toString" -"closed" -"between" -"Reflect.getPrototypeOf" -"import" -"boundary" -"reading" -"checks" -"AVAILABLE" -"FOR" -"<NUL>" -"S" -"key" -"Identifier" -"valid" -"P," -"observable" -"revoked" -"many" -"equal" -"Month" -"propagation" -"s" -"Unicode" -"Escape" -"values)" -"MapIterator" -"expression" -"values," -"Boolean.prototype.valueOf" -"comment" -"(HYPHEN-MINUS)," -"color" -"pos" -"adding" -"table" -"allocated" -"array-like" -"IS" -"addition" -"]" -"MARK)" -"mark" -"(SPACE)," -"literal" -"(SPACE)." -"non-configurable" -"U+200D" -"prototype" -">" -"enable" -"(S," -"restrictions" -"instantiated" -"Function.prototype.apply" -"external" -"WAY" -"declaration" -"CONSEQUENTIAL" -"folding" -"Date.prototype" -"an" -"E)," -"present" -"IsArray" -"/" -"contexts" -"Number" -"value" -"will" -"(UCS)" -"J.UCS" -"ADVISED" -"unpaired" -"FEED" -"ECMA-402:" -"architecture." -"parse" -"Strict" -"PARTICULAR" -"IEEE" -"comments" -"capture" -"different" -"Return" -"compiling" -"generic" -"Typed" -"same" -"configurable" -"member" -"Regular" -"mode." -"events" -"Types" -"SOFTWARE" -"string." -"extended" -"infinity" -"again" -"initialization" -"LIABLE" -"effect" -"running" -"IN" -"changing" -"validate" -"ACM," -"U+002D" -"IF" -"//" -"undefined" -"String.prototype.trim" -"argument." -"argument," -"UTC)" -"UTC." -"It" -"<table" -"ANY" -"patterns" -"without" -"extensible" -"In" -"String.prototype.charCodeAt" -"position" -"(ZERO" -"bodies" -"If" -"BE" -"(UTC)" -"less" -"being" -"captures" -"ToInteger" -"numbering" -"rest" -"unary" -"R," -"unicode" -"BY" -"captured" -"U+212A" -"generator" -"hint" -"supply" -"unsigned" -"add" -"setting" -"extends" -"4" -"usage" -"lookup" -"(A" -"match" -"Labelled" -"identical" -"Control" -"rules" -"DIRECT," -"(inclusive)" -"non-null" -"[U]" -"immediately" -"execution" -"left-hand" -"desc" -"LIMITED" -"(EQUALS" -"missing." -"B." -"user-defined" -"Bitwise" -"MATTERS" -"BRACKET" -"t" -"CLAIMS" -"multiplicative" -"output" -"OTHERWISE)" -"page" -"replacement" -"specifies" -"because" -"sequence" -"uppercase" -"conditional" -"searching" -"calling" -"INCLUDING," -"specified" -"proper" -"New" -"Date.prototype.toTimeString" -"literals" -"lead" -"[+U]" -"avoid" -"results:" -"leap" -"does" -"\"B\"," -"CreateListFromArrayLike" -"?" -"mode" -"SQUARE" -"power" -"compiler" -"WeakMap" -"(TRV)" -"A-Z" -"offset" -"regexp" -"TRV" -"ALL" -"on" -"actual" -"extension" -"Date.prototype.valueOf" -"of" -"Date.prototype.setTime" -"recognized" -"(SV)" -"(U+00DF)" -"FL," -"constructor" -"or" -"Int32Array" -"referenced" -"letters" -"No" -"Internal" -"promise" -"Function.prototype.toString" -"Reflect.defineProperty" -"operator" -"Empty" -"Week" -"(U+017F)" -"Infinity" -"additional" -"prepare" -"NO" -"*" -"ECMA-262" -"decode" -"strict" -"context." -"SIGPLAN" -"N," -"triggered" -"enough" -"TABULATION)," -"DISCLAIMED." -"ToPrimitive" -"but" -"repeated" -"construction" -"Error" -"(RIGHT" -"N2" -"promote" -"(C," -"longer" -"count" -"1024" -"UTF-16" -"embedded" -"U+002F" -"using" -"signed" -"U+002C" -"below" -"converted" -"limit" -"MERCHANTABILITY" -"<BS>" -"define" -"detailed" -"USE" -"<CR><LF>" -"Space" -"exhausted" -"combining" -"FIFO" -"general" -"as" -"optionally" -"at" -"file" -"Reflect.deleteProperty" -"trailing" -"Function" -"parameters." -"functions" -"beyond" -"Date.prototype.setUTCDate" -"virtual" -"Reflect" -"field" -"other" -"5" -"details" -"<<" -"requested" -"repeat" -"Uint8ClampedArray" -"separate" -"symbol" -"Remove" -"U" -"functions)" -"(DOLLAR" -"Object.prototype" -"calls" -"code," -"(INCLUDING" -"rule" -"strings" -"code." -"Year" -"(URL)," -"validation" -"starting" -"function," diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/generated/libxml_xml_read_memory_fuzzer.dict b/chromium/testing/libfuzzer/fuzzers/dicts/generated/libxml_xml_read_memory_fuzzer.dict deleted file mode 100644 index 62570381647..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/generated/libxml_xml_read_memory_fuzzer.dict +++ /dev/null @@ -1,663 +0,0 @@ -# -# AFL dictionary for XML -# ---------------------- -# -# Several basic syntax elements and attributes, modeled on libxml2. -# -# Created by Michal Zalewski <lcamtuf@google.com> -# - -attr_encoding=" encoding=\"1\"" -attr_generic=" a=\"1\"" -attr_href=" href=\"1\"" -attr_standalone=" standalone=\"no\"" -attr_version=" version=\"1\"" -attr_xml_base=" xml:base=\"1\"" -attr_xml_id=" xml:id=\"1\"" -attr_xml_lang=" xml:lang=\"1\"" -attr_xml_space=" xml:space=\"1\"" -attr_xmlns=" xmlns=\"1\"" - -entity_builtin="<" -entity_decimal="" -entity_external="&a;" -entity_hex="" - -string_any="ANY" -string_brackets="[]" -string_cdata="CDATA" -string_col_fallback=":fallback" -string_col_generic=":a" -string_col_include=":include" -string_dashes="--" -string_empty="EMPTY" -string_empty_dblquotes="\"\"" -string_empty_quotes="''" -string_entities="ENTITIES" -string_entity="ENTITY" -string_fixed="#FIXED" -string_id="ID" -string_idref="IDREF" -string_idrefs="IDREFS" -string_implied="#IMPLIED" -string_nmtoken="NMTOKEN" -string_nmtokens="NMTOKENS" -string_notation="NOTATION" -string_parentheses="()" -string_pcdata="#PCDATA" -string_percent="%a" -string_public="PUBLIC" -string_required="#REQUIRED" -string_schema=":schema" -string_system="SYSTEM" -string_ucs4="UCS-4" -string_utf16="UTF-16" -string_utf8="UTF-8" -string_xmlns="xmlns:" - -tag_attlist="<!ATTLIST" -tag_cdata="<![CDATA[" -tag_close="</a>" -tag_doctype="<!DOCTYPE" -tag_element="<!ELEMENT" -tag_entity="<!ENTITY" -tag_ignore="<![IGNORE[" -tag_include="<![INCLUDE[" -tag_notation="<!NOTATION" -tag_open="<a>" -tag_open_close="<a />" -tag_open_exclamation="<!" -tag_open_q="<?" -tag_sq2_close="]]>" -tag_xml_q="<?xml?>" -"http://docboo" -"http://www.w" -"UTF-16LE" -"xmlns" -"he30" -"he2" -"IET" -"FDF-10" -"aDUCS-4OPveb:" -"a>" -"UT" -"xMl" -"/usr/share/sg" -"ha07" -"http://www.oa" -"cle" - - -# This part has been generated with testing/libfuzzer/dictionary_generator.py -# using libxml_xml_read_memory_fuzzer binary and XML 1.0 W3C Recommendation. -"WG" -"all" -"code" -"TC2." -"text" -"forbidden" -"supported" -"(UAX" -"by" -"syntax" -"notations" -"area" -"SGML," -"/" -"Content" -"conditional" -"follow" -"Document" -"find" -"MUST" -"with," -"removed" -"based" -"(" -"V.," -"outside" -"should" -"to" -"only" -"'('" -"W3C." -"8" -"quotation" -"local" -"(E)." -"do" -"QUESTION" -"FULL" -"WIDTH" -"string" -"notation" -"without" -"':'" -"between" -"space," -"Value" -"choice" -"'INCLUDE'" -"cannot" -"JIS" -"NO-BREAK" -"E62" -"ending" -"(URI):" -"(#PCDATA" -"LAO" -"resource" -"embedded" -"called" -"'<!ENTITY" -"Conditional" -"list" -"Entity" -"large" -"(GI)," -"contain" -"small" -"&MAY;" -"->" -"ASCII" -"available" -"abbreviated" -"set" -"3986\">IETF" -"\"REC\">" -"reference" -"##" -"etc." -"DTD," -"direct" -"module" -"sign" -"zero" -"Version" -"M." -"are" -"3C" -"UTF-8," -"3F" -"canonical" -"&SGML;" -"font" -"incompatible" -"B+," -"EMPTY>" -"section" -"ID," -"label" -"state" -"version" -"enumerated" -"apos" -"above" -"capital" -"new" -"(ASCII)" -"PI" -"'='" -"public" -"body" -"C" -"full" -"escaping" -"parent" -"UAX" -"error" -"component" -"here" -"ranges" -"MIDDLE" -"objects" -"address" -"path" -"Identifier" -"UTF-16," -"change" -"V2.1" -"last" -"2141\">IETF" -"root" -"ISO-10646-UCS-2" -"equal" -"against" -"[A-Z]" -"connection" -"2781\">IETF" -"attributes" -"Attribute" -"error," -"comment" -"among" -"named" -"LINE" -"point" -"color" -"character" -"marked" -"names" -"FF" -"table" -"BCP" -"DOT" -"once" -"use" -"from" -"stream" -"entities" -"MARK," -"P." -"contains" -"two" -"'ANY'" -"symbol" -"few" -"duplicate" -"CDATA," -"call" -"UCS-4," -"scope" -"type" -"empty" -"more" -"XML" -"field" -"XSLT" -"Default" -"Markup" -"validity" -"ZERO" -"Space" -"normalized" -"child" -"')*'" -"%YN;\"" -"(MUST," -"must" -"#IMPLIED>" -"sample" -"6F" -"GREEK" -"this" -"Text" -"expanded" -"single" -"value" -"will" -"(UCS)" -"FEED" -"paragraph" -"values" -"three" -"many" -"following" -"closing" -"property" -"'}'" -"F." -"LOW" -"control" -"ASCII," -"2119\">IETF" -"L." -"links" -"YN" -"process" -"attribute" -"is" -"in" -"accept" -"parse" -"middle" -"tag" -"MIME" -"allowed" -"X-0208-1997." -"UTF-7" -"']'" -"absolute" -"information" -"different" -"end" -"PI." -"Notation" -"quot" -"generic" -"unparsed" -"charset" -"namespace" -"same" -"(CDATA)" -"write" -"read" -"ISO/IEC" -"H" -"units" -"8879\">ISO" -"document" -"parameter" -"start" -"A" -"product" -"Resource" -"description" -"see" -"may" -"stop" -"after" -"'IGNORE'" -"U+FEFF," -"HTML." -"possible" -"user" -"characters" -"such" -"on" -"data" -"compatibility" -"STACS" -"a" -"All" -"I" -"undefined" -"rules" -"expression" -"markup" -"author" -"well" -"-MSM" -"element" -"')'" -")" -"xml:lang" -"y" -"position" -"the" -"first" -"left" -"decl" -"S." -"MA," -"BB" -"less" -"<body>" -"storage" -"';'" -"entity" -"symbols" -"10646\">ISO" -"stored" -"nbsp" -"COLON," -"THAI" -"(FAMILY" -"R." -"before" -"HTML" -"MIME)," -"MIME)." -"group" -"trying" -"No" -"had" -"except" -"detected" -"valid" -"usage" -"input" -"(double-hyphen)" -"has" -"match" -"(('X'" -"identical" -"..." -"V2.5" -"3023\">IETF" -"combination" -"format" -"fragment" -"URN" -"URI" -"symbol," -"SHOULD," -"declared" -"logical" -"not" -"using" -"bit" -"NDATA" -"like" -"sequence," -"term" -"name" -"Encoding" -"B," -"decimal" -"B)" -"JC)" -"(#PCDATA)" -"token" -"10744\">ISO" -"steps" -"ENTITY)" -"found" -"8879:1986(E)." -"|" -"FE" -"subset" -"profile" -"right" -"(W3C)" -"p" -"bytes" -"creation" -"(('#FIXED'" -"HH" -"elements" -"escape" -"proper" -"et" -"FINAL" -"out" -"predefined" -"provided" -"declaration" -"XML." -"container" -"network" -"'" -"space" -"SPACE" -"preserve" -"SGML" -"per" -"content" -"method" -"does" -"XML)," -"occurs" -"be" -"HTTP" -"8879:1986(E)" -"10646:2000\">ISO" -"B" -"'{'" -"RFC" -"step" -"base" -"references" -"output" -"\"MUST" -"permitted" -"definition" -"EDIT:" -"language" -"standalone" -"column" -"of" -"could" -"Tags" -"mdash" -"recognized" -"times" -"range" -"due" -"'#PCDATA'" -"hexadecimal" -"or" -"'PUBLIC'" -"N.B." -"','" -"A," -"encoding" -"xml:space" -"within" -"STOP" -"number" -"one" -"&MAY;," -"Internal" -"ISO" -"construct" -"operator" -"RETURN" -"mark" -"Empty" -"IANA" -"doesn't" -"(#PCDATA)>" -"long" -"checked" -"(C" -"indicate" -"IETF" -"unknown" -"there" -"system" -"wrapper" -"HYPHEN-MINUS," -"needed" -"2" -"too" -"literal" -"white" -"<!--" -"was" -"final" -"function" -"D." -"T." -"'?>'" -"option" -"form" -"enough" -"D21" -"collapsed" -"(XML)" -"but" -"selector" -"ampersand," -"part" -"scripts," -"DTD." -"EBCDIC" -"UTF-16LE," -"line" -"DTD" -"with" -"than" -"MAY" -"relative" -"Set" -"target" -"keyword" -"default" -"double" -"SA," -"tree" -"return," -"'['" -"carriage" -"computer" -"to," -">" -"similar" -"declare" -"result" -"and" -"files" -"UTF-16BE," -"ISBN" -"semicolon" -"up" -"defined" -"parser" -"CHARACTER" -"E14" -"an" -"UTF-8." -"as" -"warning" -"exist" -"at" -"file" -"New" -"need" -"check" -"('M'" -"conversion" -"angle" -"no" -"#IMPLIED\">" -"-" -"validating" -"invalid" -"A." -"EUC," -"instance" -"internal" -"A7" -"XHTML" -"registered" -"'|'" -"node" -"added" -"multiple" -"Name" -"XML," -"quote" -"preceding" -"object" -"AM" -"W3C" -"(WG)." -"Element" -"('L'" -"class" -"generated" -"letter" -"SARA" -"inserted" -"model" -"structure" -"'\\'" -"building" -"'NDATA'" -"backward" -"less-than" -"for" -"E11" -"failure" -"FFFE," -"required" -"rule" -"(EBNF)" -"CARRIAGE" -"bracket" -"link" -"%" -"requires" -"external" - diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/icc.dict b/chromium/testing/libfuzzer/fuzzers/dicts/icc.dict deleted file mode 100644 index f050ce22809..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/icc.dict +++ /dev/null @@ -1,115 +0,0 @@ -# Fuzzing dictionary for icc color profiles. - -magic="acsp" - -# Tag names and types -"A2B0" -"A2B1" -"A2B2" -"B2A0" -"B2A1" -"B2A2" -"XYZ " -"bTRC" -"bXYZ" -"bfd " -"bkpt" -"calt" -"chad" -"chrm" -"ciis" -"clot" -"clro" -"clrt" -"cprt" -"crdi" -"curv" -"data" -"desc" -"devs" -"dict" -"dmdd" -"dmnd" -"dscm" -"dtim" -"gTRC" -"gXYZ" -"gamt" -"kTRC" -"lumi" -"mAB " -"mBA " -"meas" -"meta" -"mft1" -"mft2" -"mluc" -"mmod" -"mpet" -"ncl2" -"ncol" -"para" -"pre0" -"pre1" -"pre2" -"ps2i" -"ps2s" -"psd0" -"psd1" -"psd2" -"psd3" -"pseq" -"psid" -"rTRC" -"rXYZ" -"rcs2" -"resp" -"rig0" -"rig2" -"scrd" -"sf32" -"sig " -"targ" -"tech" -"text" -"uf32" -"ui08" -"ui16" -"ui32" -"ui64" -"vcgt" -"view" -"vued" -"wtpt" - -# Color spaces -"CMYK" -"CMY " -"GRAY" -"Lab " -"Lch " -"Luv " -"RGB " -"XYZ " -"YCbr" - -# Profile class -"abst" -"link" -"mntr" -"nmcl" -"prtr" -"scnr" -"spac" - -# Platforms -"ADBE" -"APPL" -"MSFT" - -# Profile creators or CMM names -"argl" -"appl" -"adbe" -"goog" -"lcms" diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/javascript_parser_proto.dict b/chromium/testing/libfuzzer/fuzzers/dicts/javascript_parser_proto.dict deleted file mode 100644 index 8cb0209694f..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/javascript_parser_proto.dict +++ /dev/null @@ -1,307 +0,0 @@ -# Copyright 2017 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. - -# Elementary building blocks: - -# Empty -" " - -# Tokens -"(" -")" -"[" -"]" -"{" -"}" -":" -";" -"." -"..." -"?" -"++" -"--" -"=>" -"!" -"=" -"|=" -"^=" -"&=" -"<<=" -">>=" -">>>=" -"+=" -"-=" -"*=" -"/=" -"%=" -"**=" -"," -"||" -"&&" -"|" -"^" -"&" -"<<" -">>" -">>>" -"+" -"-" -"*" -"/" -"%" -"**" -"==" -"!=" -"===" -"!==" -"<" -">" -"<=" -">=" -"!" -"~" - -# Keywords, contextual keywords, literals, reserved words. -"__proto__" -"anonymous" -"arguments" -"as" -"async" -"await" -"break" -"case" -"catch" -"class" -"const" -"constructor" -"continue" -"debugger" -"default" -"delete" -"do" -"else" -"enum" -"eval" -"export" -"extends" -"false" -"finally" -"for" -"from" -"function" -"get" -"if" -"import" -"in" -"instanceof" -"let" -"name" -"new" -"null" -"of" -"prototype" -"return" -"sent" -"set" -"static" -"super" -"switch" -"target" -"this" -"throw" -"true" -"try" -"typeof" -"undefined" -"var" -"void" -"while" -"with" - -# TODO(marja): Add names of known classes. - -# Separators -"\n" -"; " -$0 "\n" -$0 "; " - -$0 "," $1 -"(" $0 ")" - -# Identifiers -"foo" -"bar" -"a" -"b" -"c" - -# Other literals -"0" -"0.0" - -# TODO(marja): Add strings and numbers! And quotes. - -# Other meaningful words from the spec -"new.target" - -# More complicated building blocks - -# Block, object, or binding pattern -"{" $0 "}" -"{" $0 ": " $1 "}" - -# Array or array binding pattern -"[" $0 "]" - -# Rest element or rest parameter -"..." -"..." $0 - -# Variable declarations -"let" $0 "=" $1 ";" -"const " $0 "=" $1 ";" -"var" $0 "=" $1 ";" - -# Return statements -"return" $0 -"return" $0 ";" - -# If statements -"if (" $0 ")" $1 -"if (" $0 ") {" $1 "}" -"if (" $0 ") {" $1 "} else {" $2 "}" -"if (" $0 ")" $1 "else" $2 - -# Iteration statements -"do" $0 "while (" $1 ");" -"for (" $0 ")" $1 -"for (" $0 ") {" $1 " }" -"for (" $0 "in" $1 ")" $2 -"for (" $0 "in" $1 ") {" $2 "}" -"for (" $0 "of" $1 ")" $2 -"for (" $0 "of" $1 ") {" $2 "}" -"for (" $0 ";" $1 ";" $2 ")" $3 -"for (" $0 ";" $1 ";" $2 ") {" $3 "}" -"for await (" $0 ")" $1 -"for await (" $0 ") {" $1 " }" -"for await (" $0 "in" $1 ")" $2 -"for await (" $0 "in" $1 ") {" $2 "}" -"for await (" $0 "of" $1 ")" $2 -"for await (" $0 "of" $1 ") {" $2 "}" -"for await (" $0 ";" $1 ";" $2 ")" $3 -"for await (" $0 ";" $1 ";" $2 ") {" $3 "}" -"while (" $0 ")" $1 -"while (" $0 ") {" $1 "}" -"continue" -"continue;" -"continue" $0 -"break" -"break;" -"break" $0 - -# With statements -"with (" $0 ")" $1 -"with (" $0 ") {" $1 "}" - -# Switch statements -"switch (" $0 ")" $1 -"switch (" $0 ") {" $1 "}" -"case" $0 ": " $1 -"case" $0 ": {" $1 "}" -"default :" $0 - -# Try-catch statements -"try" $0 "catch (" $1 ")" $2 -"try {" $0 "} catch (" $1 ") {" $2 "}" -"try" $0 "finally (" $1 ")" $2 -"try {" $0 "} finally (" $1 ") {" $2 "}" -"try" $0 "catch (" $1 ")" $2 "finally" $3 -"try {" $0 "} catch (" $1 ") {" $2 "} finally {" $3 "}" - -# Functions and arrow functions -"function" $0 "(" $1 ") {" $2 "}" -"function" "(" $0 ") {" $1 "}" -$0 "=>" $1 -$0 "=> {" $1 "}" -"(" $0 ") => {" $1 "}" -"(" $0 ") =>" $1 - -# Strict functions and arrow functions -"function" $0 "(" $1 ") { 'use strict';" $2 "}" -"function" "(" $0 ") { 'use strict';" $1 "}" -$0 "=> { 'use strict';" $1 "}" -"(" $0 ") => { 'use strict'; " $1 "}" - -# Methods -$0 "(" $1 ") {" $1 "}" -"get" $0 "(" $1 ") {" $1 "}" -"set" $0 "(" $1 ") {" $1 "}" -"static" $0 "(" $1 ") {" $1 "}" -"static get" $0 "(" $1 ") {" $1 "}" -"static set" $0 "(" $1 ") {" $1 "}" - -# Generators -"*" $0 "(" $1 ") {" $2 "}" -"function *" $0 "(" $1 ") {" $2 "}" -"function * (" $1 ") {" $2 "}" -"yield" $0 -"yield *" $0 - -# Strict generators -"function *" $0 "(" $1 ") {'use strict'; " $2 "}" -"function * (" $1 ") { 'use strict'; " $2 "}" - -# Classes -"class" $0 "{" $1 "}" -"class" $0 "extends" $1 "{" $2 "}" - -# Async functions, async methods, async arrow functions -"async function" $0 "(" $1 ") {" $2 "}" -"async function" "(" $0 ") {" $1 "}" -"async" $0 "(" $1 ") {" $2 "}" -"async" $0 "=>" $1 -"async" $0 "=> {" $1 "}" -"async(" $0 ") => {" $1 "}" -"async(" $0 ") =>" $1 -"await" $0 - -# Strict async functions. -"async function" $0 "(" $1 ") { 'use strict'; " $2 "}" -"async function" "(" $0 ") { 'use strict'; " $1 "}" -"async" $0 "(" $1 ") { 'use strict'; " $2 "}" -"async" $0 "=> { 'use strict'; " $1 "}" -"async(" $0 ") => { 'use strict';" $1 "}" - -# Call expressions -$0 "[" $1 "]" -$0 "(" $1 ")" - -# Template literals -"`foo`" -$0 "`foo`" -# TODO(marja): add more - -# Strict directive -"'use strict';" - -# Regexps -"/foo/" -# TODO(marja): add more - -# Conditional expression -$0 "?" $1 ":" $2 -$0 "?" $1 ":" $2 ";" - -# Assignment expressions -$0 "=" $1 -$0 "=" $1 ";" - -# Import / export (for modules) -"import" $0 ";" -"export" $0 ";" - -# Misc. -"eval('');" - diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/json.dict b/chromium/testing/libfuzzer/fuzzers/dicts/json.dict deleted file mode 100644 index 18a83f4fa5f..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/json.dict +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 2016 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. - -"{" -"}" -"[" -"]" -"\"" -"'" -"\\" -"//" -":" -"," -" " -"\\n" -"\\r" -"/*" -"*/" -"true" -"false" -"null" -"\\u" -"\\b" -"\\f" -"\\t" -"." -"e" -"e+" -"e-" -"E" -"E+" -"E-" diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/mhtml.dict b/chromium/testing/libfuzzer/fuzzers/dicts/mhtml.dict deleted file mode 100644 index f3205f12901..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/mhtml.dict +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright 2016 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. - -# This file contains several basic MHTML syntax elements based on -# 1) rfc2557 -# 2) test files from chromium/third_party/WebKit/LayoutTests/mhtml -# 3) suggestions from manual runs of libFuzzer - -line_ending_1="\x0D\x0A" -line_ending_2="\x0D" -line_ending_3="\x0A" -backslash="\\" -space=" " -tab="\x08" -open_paren="(" -close_paren=")" - -content_location1="Content-Location: CID: foo@bar.net" -content_location2="Content-Location: http://www.ietf.cnri.reston.va.us/images/ietflogo.gif" -content_location3="Content-Location: CID:foo@bar.net ; this header is disregarded" -content_location4="Content-Location: CID:foo@bar.net" -content_location5="Content-Location: CID:foo3@foo1@bar.net" - -content_type1_line1="Content-Type: multipart/related; boundary=\"boundary-example\";" -content_type1_line2a="\x08type\"text/html\"" -content_type1_line2b="\x08type="text/html" -content_type1_line2c="\x08type=\"text/html\"; start=\"<foo3@foo1@bar.net>\"" -content_type1_line2d="\x08type=\"text/html\"; start=\"<foo@bar.net>\"" -content_type2="Content-Type: text/html;charset=\"US-ASCII\"" -content_type3="Content-Type: text/html; charset=\"iso-8859-1\"" -content_type4="Content-Type: multipart/related;" -content_type5="Content-Type: IMAGE/GIF" - -content_id1="Content-ID: <97116092511xyz@foo.bar.net>" -content_id2="Content-ID: <foo@bar.net>" -content_id3="Content-ID: <foo4@foo1@bar.net>" - -cid_uri_usage_1="<IMG SRC=\"cid:foo4@foo1@bar.net\">" -cid_uri_usage_2="<IMG SRC=\"cid:foo@bar.net\">" - -boundary_prefix="--" -boundary_1="--boundary-example" -boundary_final1="--boundary-example--" -boundary_3="\x08boundary=\"----=_NextPart_000_0000_87206557.D2C008B0\";" - -from="From: foo1@bar.net" -to="To: foo2@bar.net" - -subject_1="Subject: A simple example" -subject_2="Subject: =?iso-2022-jp?B?QSBzaW1wbGUgcGFnZQ==?=" - -date_1="Date: Wed, May 11 2011 15:36:36 GMT-0700" - -mime_version="Mime-Version: 1.0" - -content_transfer_encoding1="Content-Transfer-Encoding: base64" -content_transfer_encoding2="Content-Transfer-Encoding: quoted-printable" -content_transfer_encoding3="Content-Transfer-Encoding: binary" -content_transfer_encoding4="Content-Transfer-Encoding: 7bit" -content_transfer_encoding5="Content-Transfer-Encoding: 8bit" - -libFuzzer_suggestion1="date" -libFuzzer_suggestion2="Access-Control-Allow-Extern" -libFuzzer_suggestion3="Link" -libFuzzer_suggestion4="from" -libFuzzer_suggestion5="boundary" -libFuzzer_suggestion6="mime-version" diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/png.dict b/chromium/testing/libfuzzer/fuzzers/dicts/png.dict deleted file mode 100644 index ea12d19e6ec..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/png.dict +++ /dev/null @@ -1,38 +0,0 @@ -# -# AFL dictionary for PNG images -# ----------------------------- -# -# Just the basic, standard-originating sections; does not include vendor -# extensions. -# -# Created by Michal Zalewski <lcamtuf@google.com> -# - -header_png="\x89PNG\x0d\x0a\x1a\x0a" - -section_IDAT="IDAT" -section_IEND="IEND" -section_IHDR="IHDR" -section_PLTE="PLTE" -section_bKGD="bKGD" -section_cHRM="cHRM" -section_fRAc="fRAc" -section_gAMA="gAMA" -section_gIFg="gIFg" -section_gIFt="gIFt" -section_gIFx="gIFx" -section_hIST="hIST" -section_iCCP="iCCP" -section_iTXt="iTXt" -section_oFFs="oFFs" -section_pCAL="pCAL" -section_pHYs="pHYs" -section_sBIT="sBIT" -section_sCAL="sCAL" -section_sPLT="sPLT" -section_sRGB="sRGB" -section_sTER="sTER" -section_tEXt="tEXt" -section_tIME="tIME" -section_tRNS="tRNS" -section_zTXt="zTXt" diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/prtime.dict b/chromium/testing/libfuzzer/fuzzers/dicts/prtime.dict deleted file mode 100644 index 7b14a536cb6..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/prtime.dict +++ /dev/null @@ -1,62 +0,0 @@ -"0" -"1" -"2" -"3" -"4" -"5" -"6" -"7" -"8" -"9" -" " -# <tab> -"\x09" -":" -"." -"/" -"-" -"+" -";" -"(" -")" -"[" -"]" -"T" -"Z" -"AM" -"PM" -"Mon" -"Tue" -"Wed" -"Thu" -"Fri" -"Sat" -"Sun" -"Jan" -"Feb" -"Mar" -"Apr" -"May" -"Jun" -"Jul" -"Aug" -"Sep" -"Oct" -"Nov" -"Dec" -"AST" -"BST" -"CDT" -"CST" -"EDT" -"EET" -"EST" -"GMT" -"JST" -"MDT" -"MET" -"MST" -"NST" -"PDT" -"PST" -"GMT" diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/regexp.dict b/chromium/testing/libfuzzer/fuzzers/dicts/regexp.dict deleted file mode 100644 index f638a57102f..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/regexp.dict +++ /dev/null @@ -1,239 +0,0 @@ -# -# AFL dictionary for JS regex -# --------------------------- -# -# Contains various regular expressions. -# -# Created by Yang Guo <yangguo@chromium.org> -# - -"?" -"abc" -"()" -"[]" -"abc|def" -"abc|def|ghi" -"^xxx$" -"ab\\b\\d\\bcd" -"\\w|\\d" -"a*?" -"abc+" -"abc+?" -"xyz?" -"xyz??" -"xyz{0,1}" -"xyz{0,1}?" -"xyz{93}" -"xyz{1,32}" -"xyz{1,32}?" -"xyz{1,}" -"xyz{1,}?" -"a\\fb\\nc\\rd\\te\\vf" -"a\\nb\\bc" -"(?:foo)" -"(?: foo )" -"foo|(bar|baz)|quux" -"foo(?=bar)baz" -"foo(?!bar)baz" -"foo(?<=bar)baz" -"foo(?<!bar)baz" -"()" -"(?=)" -"[]" -"[x]" -"[xyz]" -"[a-zA-Z0-9]" -"[-123]" -"[^123]" -"]" -"}" -"[a-b-c]" -"[x\\dz]" -"[\\d-z]" -"[\\d-\\d]" -"[z-\\d]" -"\\cj\\cJ\\ci\\cI\\ck\\cK" -"\\c!" -"\\c_" -"\\c~" -"[\\c!]" -"[\\c_]" -"[\\c~]" -"[\\ca]" -"[\\cz]" -"[\\cA]" -"[\\cZ]" -"[\\c1]" -"\\[\\]\\{\\}\\(\\)\\%\\^\\#\\ " -"[\\[\\]\\{\\}\\(\\)\\%\\^\\#\\ ]" -"\\8" -"\\9" -"\\11" -"\\11a" -"\\011" -"\\118" -"\\111" -"\\1111" -"(x)(x)(x)\\1" -"(x)(x)(x)\\2" -"(x)(x)(x)\\3" -"(x)(x)(x)\\4" -"(x)(x)(x)\\1*" -"(x)(x)(x)\\3*" -"(x)(x)(x)\\4*" -"(x)(x)(x)(x)(x)(x)(x)(x)(x)(x)\\10" -"(x)(x)(x)(x)(x)(x)(x)(x)(x)(x)\\11" -"(a)\\1" -"(a\\1)" -"(\\1a)" -"(\\2)(\\1)" -"(?=a){0,10}a" -"(?=a){1,10}a" -"(?=a){9,10}a" -"(?!a)?a" -"\\1(a)" -"(?!(a))\\1" -"(?!\\1(a\\1)\\1)\\1" -"\\1\\2(a(?:\\1(b\\1\\2))\\2)\\1" -"[\\0]" -"[\\11]" -"[\\11a]" -"[\\011]" -"[\\00011]" -"[\\118]" -"[\\111]" -"[\\1111]" -"\\x60" -"\\x3z" -"\\c" -"\\u0034" -"\\u003z" -"foo[z]*" -"\\u{12345}" -"\\u{12345}\\u{23456}" -"\\u{12345}{3}" -"\\u{12345}*" -"\\ud808\\udf45*" -"[\\ud808\\udf45-\\ud809\\udccc]" -"a" -"a|b" -"a\\n" -"a$" -"a\\b!" -"a\\Bb" -"a*?" -"a?" -"a??" -"a{0,1}?" -"a{1,2}?" -"a+?" -"(a)" -"(a)\\1" -"(\\1a)" -"\\1(a)" -"a\\s" -"a\\S" -"a\\D" -"a\\w" -"a\\W" -"a." -"a\\q" -"a[a]" -"a[^a]" -"a[a-z]" -"a(?:b)" -"a(?=b)" -"a(?!b)" -"\\x60" -"\\u0060" -"\\cA" -"\\q" -"\\1112" -"(a)\\1" -"(?!a)?a\\1" -"(?:(?=a))a\\1" -"a{}" -"a{,}" -"a{" -"a{z}" -"a{12z}" -"a{12," -"a{12,3b" -"{}" -"{,}" -"{" -"{z}" -"{1z}" -"{12," -"{12,3b" -"a" -"abc" -"a[bc]d" -"a|bc" -"ab|c" -"a||bc" -"(?:ab)" -"(?:ab|cde)" -"(?:ab)|cde" -"(ab)" -"(ab|cde)" -"(ab)\\1" -"(ab|cde)\\1" -"(?:ab)?" -"(?:ab)+" -"a?" -"a+" -"a??" -"a*?" -"a+?" -"(?:a?)?" -"(?:a+)?" -"(?:a?)+" -"(?:a*)+" -"(?:a+)+" -"(?:a?)*" -"(?:a*)*" -"(?:a+)*" -"a{0}" -"(?:a+){0,0}" -"a*b" -"a+b" -"a*b|c" -"a+b|c" -"(?:a{5,1000000}){3,1000000}" -"(?:ab){4,7}" -"a\\bc" -"a\\sc" -"a\\Sc" -"a(?=b)c" -"a(?=bbb|bb)c" -"a(?!bbb|bb)c" -"\xe2\x81\xa3" -"[\xe2\x81\xa3]" -"\xed\xb0\x80" -"\xed\xa0\x80" -"(\xed\xb0\x80)\x01" -"((\xed\xa0\x80))\x02" -"\xf0\x9f\x92\xa9" -"\x01" -"\x0f" -"[-\xf0\x9f\x92\xa9]+" -"[\xf0\x9f\x92\xa9-\xf4\x8f\xbf\xbf]" -"(?<=)" -"(?<=a)" -"(?<!)" -"(?<!a)" -"(?<a>)" -"(?<a>.)" -"(?<a>.)\\k<a>" -"\\p{Script=Greek}" -"\\P{sc=Greek}" -"\\p{Script_Extensions=Greek}" -"\\P{scx=Greek}" -"\\p{General_Category=Decimal_Number}" -"\\P{gc=Decimal_Number}" -"\\p{gc=Nd}" -"\\P{Decimal_Number}" -"\\p{Nd}" -"\\P{Any}" -"\\p{Changes_When_NFKC_Casefolded}" diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/v8_wasm.dict b/chromium/testing/libfuzzer/fuzzers/dicts/v8_wasm.dict deleted file mode 100644 index f86c76301c6..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/v8_wasm.dict +++ /dev/null @@ -1,2 +0,0 @@ -"name" - diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/web_icon_sizes.dict b/chromium/testing/libfuzzer/fuzzers/dicts/web_icon_sizes.dict deleted file mode 100644 index 3616c4f0969..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/web_icon_sizes.dict +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2016 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. - -"x" -"X" -"0" -"1" -"2" -"3" -"4" -"5" -"6" -"7" -"8" -"9" -"any" -"ANY" -"\x00" -"\x09" -"\x0A" -"\x0C" -"\x0D" diff --git a/chromium/testing/libfuzzer/fuzzers/dicts/webgl-glsl.dict b/chromium/testing/libfuzzer/fuzzers/dicts/webgl-glsl.dict deleted file mode 100644 index 32002e9bbde..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/dicts/webgl-glsl.dict +++ /dev/null @@ -1,262 +0,0 @@ -# Tokens for WebGL 2.0 Shader Language. -# TODO: Seperate tokens for vertex shaders into seperate file for use by -# swiftshader_vertex_routine_fuzzer. - -# Preprocessor tokens -"#" -"#define" -"#undef" -"#if" -"#ifdef" -"#ifndef" -"#else" -"#elif" -"#endif" -"#error" -"#pragma" -"#extension" -"#version" -"#line" -"defined" -"#macros" -"__LINE__" -"__FILE__" -"__VERSION__" -"GL_ES" - - # Fragment shaders only -"GL_FRAGMENT_PRECISION_HIGH" - -# Language tokens -"(" -")" -"+" -"-" -"~" -"!" -"*" -"/" -"%" -"+" -"-" -"<<" -">>" -"<" -">" -"<=" -">=" -"==" -"!=" -"+=" -"-=" -"*=" -"/=" -"%=" -"<<=" -">>=" -";" -"," -"." -"[" -"]" -"++" -"--" -"&" -"^" -"|" -"&&" -"||" - -# Keywords -" attribute " -" const " -" uniform " -" varying " -" break " -" continue " -" do " -" for " -" while " -" if " -" else " -" in " -" out " -" inout " -" float " -" int " -" void " -" bool " -" true " -" false " -" lowp " -" mediump " -" highp " -" precision " -" invariant " -" discard " -" return" - -# Types, include valid examples and partial ones (that are invalid on their own) -" mat2(" -" mat2(1.0)" -" mat2(1.0,2.0,3.0,4.0)" -" mat3(vec2(1.0, 1.0),1.0,vec2(1.0, 1.0),1.0,vec2(1.0, 1.0),1.0)" -" mat3(1.0)" -" mat3(" -" mat4(" -" mat4(1.0)" -" mat4(vec4(1.0),vec4(1.0,2.0,3.0,4.0),vec4(3.3),vec4(4.4))" -"vec2" -" vec2(1)" -" vec3(1)" -" vec3" -" vec4(1)" -" vec4" -" ivec2(1) " -" ivec2" -" ivec3(1)" -" ivec3" -" ivec4(1)" -" ivec4" -" bvec2(true)" -" bvec2" -" bvec3(true)" -" bvec3" -" bvec4(true)" -" bvec4" -" sampler2D " -" samplerCube " -" struct " -" sampler3D " -" samplerCube " -" sampler2DShadow " -" sampler2DArray " -" sampler2DArrayShadow " -" sampler2DMS " -" samplerCubeShadow " -" isampler2D " -" isampler3D " -" isamplerCube " -" isampler2DArray " -" isampler2DMS " -" usampler2D " -" usampler3D " -" usampler2DArray " -" usampler2DMS " -" usamplerCube " -" image2D " -" image3D " -" imageCube " -" image2DArray " -" iimage2D " -" iimage3D " -" iimageCube " -" iimage2DArray " -" uimage2D " -" uimage3D " -" uimageCube " -" uimage2DArray " -" atomic_uint " - -# Builtin Variables -"gl_Position" -"gl_FragColor" -"gl_FragData" -"gl_FrontFacing" -"gl_PointCoord" -"gl_MaxDrawBuffers" -"gl_MaxFragmentUniformVectors" -"gl_MaxTextureImageUnits" -"gl_MaxCombinedTextureImageUnits" -"gl_MaxVertexTextureImageUnits" -"gl_MaxVaryingVectors" -"gl_MaxVertexUniformVectors" -"gl_MaxVertexAttribs" -"gl_FragCoord.x" -"gl_FragCoord.y" -"gl_FragCoord.z" -"gl_FragData" -"gl_FragDepth" -"gl_InstanceID" -"gl_NumWorkGroups" -"gl_PointSize" -"gl_VertexID" - -# misc. -"void main(){" - -# Generated calls to builtin functions. -" pow(1.0,1.0)" -" fract(1.0)" -" dFdx(1.0)" -" step(1.0,1.0)" -" min(1,1)" -" min(1.0,1.0)" -" dot(1.0,1.0)" -" greaterThanEqual(uvec2(1,2),uvec2(1,2))" -" asin(1.0)" -" lessThanEqual(ivec2(1,-2),ivec2(1,-2))" -" inversesqrt(1.0)" -" length(1.0)" -" acosh(1.0)" -" roundEven(1.0)" -" greaterThanEqual(ivec2(1,-2),ivec2(1,-2))" -" greaterThan(uvec2(1,2),uvec2(1,2))" -" radians(1.0)" -" asinh(1.0)" -" uintBitsToFloat(1)" -" cos(1.0)" -" ceil(1.0)" -" equal(uvec2(1,2),uvec2(1,2))" -" normalize(1.0)" -" distance(1.0,1.0)" -" abs(1)" -" clamp(1.0,1.0,1.0)" -" tan(1.0)" -" smoothstep(1.0,1.0,1.0)" -" isinf(1.0)" -" not(bvec2(true,false))" -" degrees(1.0)" -" mix(1.0,1.0,true)" -" max(1.0,1.0)" -" lessThanEqual(uvec2(1,2),uvec2(1,2))" -" round(1.0)" -" atan(1.0,1.0)" -" floatBitsToInt(1.0)" -" abs(1.0)" -" fwidth(1.0)" -" lessThan(ivec2(1,-2),ivec2(1,-2))" -" intBitsToFloat(1)" -" mix(1.0,1.0,1.0)" -" notEqual(uvec2(1,2),uvec2(1,2))" -" floor(1.0)" -" refract(1.0,1.0,1.0)" -" equal(ivec2(1,-2),ivec2(1,-2))" -" max(1,1)" -" cosh(1.0)" -" isnan(1.0)" -" sign(1)" -" mod(1.0,1.0)" -" acos(1.0)" -" sinh(1.0)" -" greaterThan(ivec2(1,-2),ivec2(1,-2))" -" exp2(1.0)" -" notEqual(bvec2(true,false),bvec2(true,false))" -" reflect(1.0,1.0)" -" lessThan(uvec2(1,2),uvec2(1,2))" -" sqrt(1.0)" -" sign(1.0)" -" clamp(1,1,1)" -" sin(1.0)" -" atan(1.0)" -" tanh(1.0)" -" dFdy(1.0)" -" notEqual(ivec2(1,-2),ivec2(1,-2))" -" trunc(1.0)" -" log2(1.0)" -" equal(bvec2(true,false),bvec2(true,false))" -" atanh(1.0)" -" exp(1.0)" -" faceforward(1.0,1.0,1.0)" -" floatBitsToUint(1.0)" -" log(1.0)" diff --git a/chromium/testing/libfuzzer/fuzzers/empty_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/empty_fuzzer.cc deleted file mode 100644 index 228351812d3..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/empty_fuzzer.cc +++ /dev/null @@ -1,23 +0,0 @@ -// 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. - -// Empty fuzzer that doesn't do anything. Used as test and documentation. - -#include <stddef.h> -#include <stdint.h> - -// Environment is optional. -struct Environment { - Environment() { - // Initialize your environment. - } -}; - -// Fuzzer entry point. -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - // Initialize environment once. - static Environment env; - // Run your code on data. - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/1 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/1 deleted file mode 100644 index fbbc34d02a5..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/1 +++ /dev/null @@ -1 +0,0 @@ -badfeaturename diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/10 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/10 deleted file mode 100644 index e24e9938f6e..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/10 +++ /dev/null @@ -1 +0,0 @@ -vibrate 'self' https://example.com/; vibrate 'self' https://example.net/ diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/11 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/11 deleted file mode 100644 index 9dbfca656e5..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/11 +++ /dev/null @@ -1 +0,0 @@ -vibrate 'self' https://example.org/ diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/12 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/12 deleted file mode 100644 index 739ee648eb6..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/12 +++ /dev/null @@ -1 +0,0 @@ -docwrite 'self' https://example.org/ diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/13 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/13 deleted file mode 100644 index 8b124935dc2..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/13 +++ /dev/null @@ -1 +0,0 @@ -vibrate 'self' https://example.net/; docwrite 'self' diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/14 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/14 deleted file mode 100644 index 20d73ea3a4c..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/14 +++ /dev/null @@ -1 +0,0 @@ -vibrate *; docwrite * diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/15 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/15 deleted file mode 100644 index 3423647b2ae..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/15 +++ /dev/null @@ -1 +0,0 @@ -vibrate; fullscreen; payment diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/16 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/16 deleted file mode 100644 index 933c321eaa5..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/16 +++ /dev/null @@ -1 +0,0 @@ -vibrate 'src' diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/2 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/2 deleted file mode 100644 index 1d7a2af8c3d..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/2 +++ /dev/null @@ -1 +0,0 @@ -badfeaturename 'self' diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/3 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/3 deleted file mode 100644 index f06841c490a..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/3 +++ /dev/null @@ -1 +0,0 @@ -vibrate data://badorigin diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/4 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/4 deleted file mode 100644 index 9f8e9b69a33..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/4 +++ /dev/null @@ -1 +0,0 @@ -1.0
\ No newline at end of file diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/5 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/5 deleted file mode 100644 index 4f477a9f9a6..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/5 +++ /dev/null @@ -1 +0,0 @@ -vibrate 'self' diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/6 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/6 deleted file mode 100644 index 3f4c4617594..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/6 +++ /dev/null @@ -1 +0,0 @@ -vibrate https://example.com/ diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/7 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/7 deleted file mode 100644 index e02eab56634..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/7 +++ /dev/null @@ -1 +0,0 @@ -docwrite 'none' diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/8 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/8 deleted file mode 100644 index 920f3a851f9..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/8 +++ /dev/null @@ -1 +0,0 @@ -docwrite 'self' diff --git a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/9 b/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/9 deleted file mode 100644 index 33696f7cb37..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/feature_policy_corpus/9 +++ /dev/null @@ -1 +0,0 @@ -vibrate * diff --git a/chromium/testing/libfuzzer/fuzzers/flatbuffers_corpus/monsterdata_test.mon b/chromium/testing/libfuzzer/fuzzers/flatbuffers_corpus/monsterdata_test.mon Binary files differdeleted file mode 100644 index 4c032bcfeae..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/flatbuffers_corpus/monsterdata_test.mon +++ /dev/null diff --git a/chromium/testing/libfuzzer/fuzzers/flatbuffers_verifier_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/flatbuffers_verifier_fuzzer.cc deleted file mode 100644 index 45fae7bfded..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/flatbuffers_verifier_fuzzer.cc +++ /dev/null @@ -1,16 +0,0 @@ -// 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. - -#include <stddef.h> -#include <stdint.h> - -#include "third_party/flatbuffers/src/tests/monster_test_generated.h" - -// Entry point for LibFuzzer. -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - flatbuffers::Verifier verifier(data, size); - MyGame::Example::VerifyMonsterBuffer(verifier); - return 0; -} - diff --git a/chromium/testing/libfuzzer/fuzzers/generate_javascript_parser_proto.py b/chromium/testing/libfuzzer/fuzzers/generate_javascript_parser_proto.py deleted file mode 100755 index a2bac4f550d..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/generate_javascript_parser_proto.py +++ /dev/null @@ -1,140 +0,0 @@ -#!/usr/bin/env python - -# Copyright 2017 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. - -""" -Script for generating .proto and a conversion .cc file for a templated library -based JavaScript parser fuzzer. -""" - -import sys - -def ParseWord(word_string): - # Every part of the word is either a string surrounded by "" or a placeholder - # $<int>. - - word_string = word_string.lstrip().rstrip() - - parts = [] - while len(word_string) > 0: - if word_string[0] == '"': - end_ix = 1 + word_string[1:].index('"') - parts.append(word_string[1:end_ix]) - word_string = word_string[(end_ix + 1):] - elif word_string[0] == '$': - if ' ' in word_string: - end_ix = word_string.index(' ') - else: - end_ix = len(word_string) - parts.append(int(word_string[1:end_ix])) - word_string = word_string[end_ix:] - else: - assert(False) - word_string = word_string.lstrip() - return parts - -def GenerateProtoContents(words): - contents = '' - for ix in range(len(words)): - contents += ' token_value_' + str(ix) + ' = ' + str(ix) + ';\n' - return contents - -def GenerateConversionContents(words): - contents = '' - ix = 0 - for word in words: - contents += ' case ' + str(ix) + ':\n' - max_part = -1 - first = True - building_string = '' - for part in word: - if not first: - building_string += ' + std::string(" ") + ' - if isinstance(part, str): - building_string += 'std::string("' + part + '")' - else: - if (part > max_part): - max_part = part - building_string += ('token_to_string(token.inner_tokens(' + str(part) + - '), depth)') - first = False - if max_part >= 0: - contents += (' if (token.inner_tokens().size() < ' + - str(max_part + 1) + ') return std::string("");\n') - contents += ' return ' + building_string + ';\n' - ix += 1 - return contents - -def ReadDictionary(filename): - with open(filename) as input_file: - lines = input_file.readlines() - words = [] - for line in lines: - if not line.startswith('#'): - word = ParseWord(line) - if len(word) > 0: - words.append(word) - return words - -def main(argv): - output_proto_file = argv[1] - output_cc_file = argv[2] - input_dict_file = argv[3] - - words = ReadDictionary(input_dict_file) - - proto_header = ('// Generated by generate_javascript_parser_proto.py.\n' - '\n' - 'syntax = "proto2";\n' - 'package javascript_parser_proto_fuzzer;\n' - '\n' - 'message Token {\n' - ' enum Value {\n') - - - proto_footer = (' }\n' - ' required Value value = 1;\n' - ' repeated Token inner_tokens = 2;\n' - '}\n' - '\n' - 'message Source {\n' - ' required bool is_module = 1;\n' - ' repeated Token tokens = 2;\n' - '}\n') - - proto_contents = proto_header + GenerateProtoContents(words) + proto_footer - - with open(output_proto_file, 'w') as f: - f.write(proto_contents) - - conversion_header = ( - '// Generated by generate_javascript_parser_proto.py.\n' - '\n' - '#include "testing/libfuzzer/fuzzers/' - 'javascript_parser_proto_to_string.h"\n' - '\n' - '// Bound calls to token_to_string to prevent memory usage from growing\n' - '// too much.\n' - 'const int kMaxRecursiveDepth = 9;\n' - '\n' - 'std::string token_to_string(\n' - ' const javascript_parser_proto_fuzzer::Token& token, int depth)' - ' {\n' - ' if (++depth == kMaxRecursiveDepth) return std::string("");\n' - ' switch(token.value()) {\n') - - conversion_footer = (' default: break;\n' - ' }\n' - ' return std::string("");\n' - '}\n') - - conversion_contents = (conversion_header + GenerateConversionContents(words) - + conversion_footer) - - with open(output_cc_file, 'w') as f: - f.write(conversion_contents) - -if __name__ == "__main__": - main(sys.argv) diff --git a/chromium/testing/libfuzzer/fuzzers/gfx_png_image_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/gfx_png_image_fuzzer.cc deleted file mode 100644 index ab1e9e674bd..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/gfx_png_image_fuzzer.cc +++ /dev/null @@ -1,32 +0,0 @@ -// 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. - -#include <stddef.h> -#include <stdint.h> - -#include "base/logging.h" -#include "ui/gfx/image/image.h" - - -struct Environment { - Environment() { - // Disable noisy logging. - logging::SetMinLogLevel(logging::LOG_FATAL); - } -}; - -Environment* env = new Environment(); - - -// Entry point for LibFuzzer. -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - gfx::Image image = gfx::Image::CreateFrom1xPNGBytes(data, size); - - if (image.IsEmpty()) - return 0; - - image.ToSkBitmap(); - - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/hash_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/hash_fuzzer.cc deleted file mode 100644 index eb84938ffb6..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/hash_fuzzer.cc +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 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 <stddef.h> -#include <stdint.h> - -#include "base/hash.h" - -// Entry point for LibFuzzer. -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - base::Hash(data, size); - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/javascript_parser_proto_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/javascript_parser_proto_fuzzer.cc deleted file mode 100644 index e38f88e752b..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/javascript_parser_proto_fuzzer.cc +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2017 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 <stdlib.h> - -#include <iostream> - -#include "javascript_parser.pb.h" // from out/gen -#include "testing/libfuzzer/fuzzers/javascript_parser_proto_to_string.h" -#include "third_party/libprotobuf-mutator/src/src/libfuzzer/libfuzzer_macro.h" - -#include "v8/include/libplatform/libplatform.h" -#include "v8/include/v8.h" - -// Silence logging from the protobuf library. -protobuf_mutator::protobuf::LogSilencer log_silencer; - -v8::Isolate* isolate = nullptr; - -std::string protobuf_to_string( - const javascript_parser_proto_fuzzer::Source& source_protobuf) { - std::string source; - for (const auto& token : source_protobuf.tokens()) { - source += token_to_string(token, 0) + std::string(" "); - } - return source; -} - -// Explicitly specify some attributes to avoid issues with the linker dead- -// stripping the following function on macOS, as it is not called directly -// by fuzz target. LibFuzzer runtime uses dlsym() to resolve that function. -#if V8_OS_MACOSX -__attribute__((used)) __attribute__((visibility("default"))) -#endif // V8_OS_MACOSX -extern "C" int -LLVMFuzzerInitialize(int* argc, char*** argv) { - v8::V8::InitializeICUDefaultLocation((*argv)[0]); - v8::V8::InitializeExternalStartupData((*argv)[0]); - v8::V8::SetFlagsFromCommandLine(argc, *argv, true); - - // Intentionally leaked during fuzzing. - v8::Platform* platform = v8::platform::NewDefaultPlatform().release(); - v8::V8::InitializePlatform(platform); - v8::V8::Initialize(); - - v8::Isolate::CreateParams create_params; - create_params.array_buffer_allocator = - v8::ArrayBuffer::Allocator::NewDefaultAllocator(); - isolate = v8::Isolate::New(create_params); - return 0; -} - -DEFINE_BINARY_PROTO_FUZZER( - const javascript_parser_proto_fuzzer::Source& source_protobuf) { - v8::Isolate::Scope isolate_scope(isolate); - v8::HandleScope handle_scope(isolate); - v8::Local<v8::Context> context = v8::Context::New(isolate); - v8::Context::Scope context_scope(context); - - std::string source_string = protobuf_to_string(source_protobuf); - - if (getenv("LPM_DUMP_NATIVE_INPUT")) { - std::cout << source_string << std::endl; - std::cout << "module: " << source_protobuf.is_module() << std::endl; - } - v8::Local<v8::String> source_v8_string = - v8::String::NewFromUtf8(isolate, source_string.c_str(), - v8::NewStringType::kNormal) - .ToLocalChecked(); - - { - v8::TryCatch try_catch(isolate); - - if (source_protobuf.is_module()) { - v8::Local<v8::String> name = - v8::String::NewFromUtf8(isolate, "module.js", - v8::NewStringType::kNormal) - .ToLocalChecked(); - - v8::ScriptOrigin origin( - name, v8::Local<v8::Integer>(), v8::Local<v8::Integer>(), - v8::Local<v8::Boolean>(), v8::Local<v8::Integer>(), - v8::Local<v8::Value>(), v8::Local<v8::Boolean>(), - v8::Local<v8::Boolean>(), v8::True(isolate)); - v8::ScriptCompiler::Source source(source_v8_string, origin); - v8::MaybeLocal<v8::Module> module = - v8::ScriptCompiler::CompileModule(isolate, &source); - // TODO(marja): Figure out a more elegant way to silence the warning. - module.IsEmpty(); - } else { - v8::MaybeLocal<v8::Script> script = - v8::Script::Compile(context, source_v8_string); - // TODO(marja): Figure out a more elegant way to silence the warning. - script.IsEmpty(); - } - - // TODO(crbug.com/775796): run the code once we find a way to avoid endless - // loops. - } -} diff --git a/chromium/testing/libfuzzer/fuzzers/javascript_parser_proto_to_string.h b/chromium/testing/libfuzzer/fuzzers/javascript_parser_proto_to_string.h deleted file mode 100644 index 285ed1a3341..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/javascript_parser_proto_to_string.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 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. - -#ifndef TESTING_LIBFUZZER_FUZZERS_JAVASCRIPT_PARSER_PROTO_TO_STRING_H -#define TESTING_LIBFUZZER_FUZZERS_JAVASCRIPT_PARSER_PROTO_TO_STRING_H - -#include "javascript_parser.pb.h" // from out/gen - -#include <string> - -std::string token_to_string(const javascript_parser_proto_fuzzer::Token& token, - int depth); - -#endif // TESTING_LIBFUZZER_FUZZERS_JAVASCRIPT_PARSER_PROTO_TO_STRING_H diff --git a/chromium/testing/libfuzzer/fuzzers/language_detection_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/language_detection_fuzzer.cc deleted file mode 100644 index 1545f76aff9..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/language_detection_fuzzer.cc +++ /dev/null @@ -1,37 +0,0 @@ -// 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. - -#include <stddef.h> -#include <stdint.h> - -#include <string> - -#include "base/strings/string16.h" -#include "base/strings/utf_string_conversions.h" -#include "components/translate/core/language_detection/language_detection_util.h" - -// Entry point for LibFuzzer. -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - if (size == 0) { - return 0; - } - uint8_t ch = data[0]; - int lang_len = ch & 0xF; - int html_lang_len = (ch >> 4) & 0xF; - int text_len = static_cast<int>(size) - lang_len - html_lang_len; - if ((text_len < 0) || (text_len % 2 != 0)) { - return 0; - } - std::string lang(reinterpret_cast<const char*>(data), lang_len); - std::string html_lang(reinterpret_cast<const char*>(data + lang_len), - html_lang_len); - base::string16 text( - reinterpret_cast<const base::char16*>(data + lang_len + html_lang_len), - text_len / 2); - std::string cld_lang; - bool is_cld_reliable; - translate::DeterminePageLanguage(lang, html_lang, text, &cld_lang, - &is_cld_reliable); - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/libpng_read_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/libpng_read_fuzzer.cc deleted file mode 100644 index 621e3f7f9c2..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/libpng_read_fuzzer.cc +++ /dev/null @@ -1,76 +0,0 @@ -// 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. - -#include <stddef.h> -#include <stdint.h> - -#include <vector> - -#include "base/bind.h" -#include "base/callback_helpers.h" -#define PNG_INTERNAL -#include "third_party/libpng/png.h" - -void* limited_malloc(png_structp, png_alloc_size_t size) { - // libpng may allocate large amounts of memory that the fuzzer reports as - // an error. In order to silence these errors, make libpng fail when trying - // to allocate a large amount. - // This number is chosen to match the default png_user_chunk_malloc_max. - if (size > 8000000) - return nullptr; - - return malloc(size); -} - -void default_free(png_structp, png_voidp ptr) { - return free(ptr); -} - -static const int kPngHeaderSize = 8; - -// Entry point for LibFuzzer. -// Roughly follows the libpng book example: -// http://www.libpng.org/pub/png/book/chapter13.html -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - if (size < kPngHeaderSize) { - return 0; - } - - std::vector<unsigned char> v(data, data + size); - if (png_sig_cmp(v.data(), 0, kPngHeaderSize)) { - // not a PNG. - return 0; - } - - png_structp png_ptr = png_create_read_struct - (PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); - assert(png_ptr); - -#ifdef MEMORY_SANITIZER - // To avoid OOM with MSan (crbug.com/648073). These values are recommended as - // safe settings by https://github.com/glennrp/libpng/blob/libpng16/pngusr.dfa - png_set_user_limits(png_ptr, 65535, 65535); -#endif - - // Not all potential OOM are due to images with large widths and heights. - // Use a custom allocator that fails for large allocations. - png_set_mem_fn(png_ptr, nullptr, limited_malloc, default_free); - - png_set_crc_action(png_ptr, PNG_CRC_QUIET_USE, PNG_CRC_QUIET_USE); - - png_infop info_ptr = png_create_info_struct(png_ptr); - assert(info_ptr); - - base::ScopedClosureRunner struct_deleter(base::Bind( - &png_destroy_read_struct, &png_ptr, &info_ptr, nullptr)); - - if (setjmp(png_jmpbuf(png_ptr))) { - return 0; - } - - png_set_progressive_read_fn(png_ptr, nullptr, nullptr, nullptr, nullptr); - png_process_data(png_ptr, info_ptr, const_cast<uint8_t*>(data), size); - - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/libsrtp_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/libsrtp_fuzzer.cc deleted file mode 100644 index e265386676e..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/libsrtp_fuzzer.cc +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright 2016 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 <assert.h> -#include <stddef.h> -#include <stdint.h> - -#include <algorithm> -#include <vector> - -#include "third_party/libsrtp/include/srtp.h" -#include "third_party/libsrtp/include/srtp_priv.h" -#include "third_party/libsrtp/test/rtp.h" - -// TODO(katrielc) Also test the authenticated path, which is what -// WebRTC uses. This is nontrivial because you need to bypass the MAC -// check. Two options: add a UNSAFE_FUZZER_MODE flag to libsrtp (or -// the chromium fork of it), or compute the HMAC of whatever gibberish -// the fuzzer produces and write it into the packet manually. - -namespace LibSrtpFuzzer { -enum CryptoPolicy { - NONE, - LIKE_WEBRTC, - LIKE_WEBRTC_SHORT_AUTH, - LIKE_WEBRTC_WITHOUT_AUTH, - AES_128_GCM, - AES_256_GCM, - NUMBER_OF_POLICIES, -}; -} - -static size_t GetKeyLength(LibSrtpFuzzer::CryptoPolicy crypto_policy) { - switch (crypto_policy) { - case LibSrtpFuzzer::NUMBER_OF_POLICIES: - case LibSrtpFuzzer::NONE: - return 0; - case LibSrtpFuzzer::LIKE_WEBRTC: - case LibSrtpFuzzer::LIKE_WEBRTC_SHORT_AUTH: - case LibSrtpFuzzer::LIKE_WEBRTC_WITHOUT_AUTH: - return SRTP_AES_ICM_128_KEY_LEN_WSALT; - case LibSrtpFuzzer::AES_128_GCM: - return SRTP_AES_GCM_128_KEY_LEN_WSALT; - case LibSrtpFuzzer::AES_256_GCM: - return SRTP_AES_GCM_256_KEY_LEN_WSALT; - } -} - -struct Environment { - srtp_policy_t GetCryptoPolicy(LibSrtpFuzzer::CryptoPolicy crypto_policy, - const unsigned char* replacement_key, - size_t key_length) { - switch (crypto_policy) { - case LibSrtpFuzzer::NUMBER_OF_POLICIES: - case LibSrtpFuzzer::NONE: - srtp_crypto_policy_set_null_cipher_null_auth(&policy.rtp); - srtp_crypto_policy_set_null_cipher_null_auth(&policy.rtcp); - break; - case LibSrtpFuzzer::LIKE_WEBRTC: - srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80(&policy.rtp); - srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80(&policy.rtcp); - break; - case LibSrtpFuzzer::LIKE_WEBRTC_SHORT_AUTH: - srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32(&policy.rtp); - srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32(&policy.rtcp); - break; - case LibSrtpFuzzer::LIKE_WEBRTC_WITHOUT_AUTH: - srtp_crypto_policy_set_aes_cm_128_null_auth(&policy.rtp); - srtp_crypto_policy_set_aes_cm_128_null_auth(&policy.rtcp); - break; - case LibSrtpFuzzer::AES_128_GCM: - // There was a security bug in the GCM mode in libsrtp 1.5.2. - srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtp); - srtp_crypto_policy_set_aes_gcm_128_16_auth(&policy.rtcp); - break; - case LibSrtpFuzzer::AES_256_GCM: - // WebRTC uses AES-256-GCM by default if GCM ciphers are enabled. - srtp_crypto_policy_set_aes_gcm_256_16_auth(&policy.rtp); - srtp_crypto_policy_set_aes_gcm_256_16_auth(&policy.rtcp); - break; - } - - assert(static_cast<size_t>(policy.rtp.cipher_key_len) == key_length); - assert(static_cast<size_t>(policy.rtcp.cipher_key_len) == key_length); - memcpy(key, replacement_key, key_length); - return policy; - } - - Environment() { - srtp_init(); - - memset(&policy, 0, sizeof(policy)); - policy.allow_repeat_tx = 1; - policy.ekt = nullptr; - policy.key = key; - policy.next = nullptr; - policy.ssrc.type = ssrc_any_inbound; - policy.ssrc.value = 0xdeadbeef; - policy.window_size = 1024; - } - - private: - srtp_policy_t policy; - unsigned char key[SRTP_MAX_KEY_LEN] = {0}; - - static void srtp_crypto_policy_set_null_cipher_null_auth( - srtp_crypto_policy_t* p) { - p->cipher_type = SRTP_NULL_CIPHER; - p->cipher_key_len = 0; - p->auth_type = SRTP_NULL_AUTH; - p->auth_key_len = 0; - p->auth_tag_len = 0; - p->sec_serv = sec_serv_none; - } -}; - -size_t ReadLength(const uint8_t* data, size_t size) { - // Read one byte of input and interpret it as a length to read from - // data. Don't return more bytes than are available. - size_t n = static_cast<size_t>(data[0]); - return std::min(n, size - 1); -} - -Environment* env = new Environment(); - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - // Read one byte and use it to choose a crypto policy. - if (size <= 2 + SRTP_MAX_KEY_LEN) - return 0; - LibSrtpFuzzer::CryptoPolicy policy = static_cast<LibSrtpFuzzer::CryptoPolicy>( - data[0] % LibSrtpFuzzer::NUMBER_OF_POLICIES); - data += 1; - size -= 1; - - // Read some more bytes to use as a key. - size_t key_length = GetKeyLength(policy); - srtp_policy_t srtp_policy = env->GetCryptoPolicy(policy, data, key_length); - data += SRTP_MAX_KEY_LEN; - size -= SRTP_MAX_KEY_LEN; - - // Read one byte and use as number of encrypted header extensions. - uint8_t num_encrypted_headers = data[0]; - data += 1; - size -= 1; - if (num_encrypted_headers > 0) { - // Use next bytes as extension ids. - if (size <= num_encrypted_headers) - return 0; - srtp_policy.enc_xtn_hdr_count = static_cast<int>(num_encrypted_headers); - srtp_policy.enc_xtn_hdr = - static_cast<int*>(malloc(srtp_policy.enc_xtn_hdr_count * sizeof(int))); - assert(srtp_policy.enc_xtn_hdr); - for (int i = 0; i < srtp_policy.enc_xtn_hdr_count; ++i) { - srtp_policy.enc_xtn_hdr[i] = static_cast<int>(data[i]); - } - data += srtp_policy.enc_xtn_hdr_count; - size -= srtp_policy.enc_xtn_hdr_count; - } - - srtp_t session; - srtp_err_status_t error = srtp_create(&session, &srtp_policy); - free(srtp_policy.enc_xtn_hdr); - if (error != srtp_err_status_ok) { - assert(false); - return 0; - } - - // Read one byte as a packet length N, then feed the next N bytes - // into srtp_unprotect. Keep going until we run out of data. - size_t packet_size; - while (size > 0 && (packet_size = ReadLength(data, size)) > 0) { - // One byte was used by ReadLength. - data++; - size--; - - size_t header_size = std::min(sizeof(srtp_hdr_t), packet_size); - size_t body_size = packet_size - header_size; - - // We deliberately do not initialise this struct. MSAN will catch - // usage of the uninitialised memory. - rtp_msg_t message; - memcpy(&message.header, data, header_size); - memcpy(&message.body, data + header_size, body_size); - - int out_len = static_cast<int>(packet_size); - srtp_unprotect(session, &message, &out_len); - - // |packet_size| bytes were used above. - data += packet_size; - size -= packet_size; - } - - srtp_dealloc(session); - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/libxml_xml_read_memory_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/libxml_xml_read_memory_fuzzer.cc deleted file mode 100644 index b90fbb5195c..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/libxml_xml_read_memory_fuzzer.cc +++ /dev/null @@ -1,51 +0,0 @@ -// 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. - -#include <cassert> -#include <cstddef> -#include <cstdint> - -#include <functional> -#include <limits> -#include <string> - -#include "libxml/parser.h" -#include "libxml/xmlsave.h" - -void ignore (void* ctx, const char* msg, ...) { - // Error handler to avoid spam of error messages from libxml parser. -} - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - xmlSetGenericErrorFunc(NULL, &ignore); - - // Test default empty options value and one random combination of flags. - const std::string data_string(reinterpret_cast<const char*>(data), size); - const std::size_t data_hash = std::hash<std::string>()(data_string); - const int max_option_value = std::numeric_limits<int>::max(); - // Disable XML_PARSE_HUGE to avoid stack overflow. http://crbug.com/738947. - // Disable XML_PARSE_NOENT, XML_PARSE_DTD[LOAD|ATTR|VALID] to avoid timeout - // loading external entity from stdin. http://crbug.com/755142. - const int random_option = data_hash & max_option_value & ~XML_PARSE_NOENT & - ~XML_PARSE_DTDLOAD & ~XML_PARSE_DTDATTR & - ~XML_PARSE_DTDVALID & ~XML_PARSE_HUGE; - const int options[] = {0, random_option}; - - for (const auto option_value : options) { - // Intentionally pass raw data as the API does not require trailing \0. - if (auto doc = xmlReadMemory(reinterpret_cast<const char*>(data), size, - "noname.xml", NULL, option_value)) { - auto buffer = xmlBufferCreate(); - assert(buffer); - - auto context = xmlSaveToBuffer(buffer, NULL, 0); - xmlSaveDoc(context, doc); - xmlSaveClose(context); - xmlFreeDoc(doc); - xmlBufferFree(buffer); - } - } - - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/mach/BUILD.gn b/chromium/testing/libfuzzer/fuzzers/mach/BUILD.gn new file mode 100644 index 00000000000..238cf11539a --- /dev/null +++ b/chromium/testing/libfuzzer/fuzzers/mach/BUILD.gn @@ -0,0 +1,24 @@ +# Copyright 2019 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("//third_party/protobuf/proto_library.gni") + +proto_library("proto") { + sources = [ + "mach_message.proto", + ] +} + +source_set("converter") { + sources = [ + "mach_message_converter.cc", + "mach_message_converter.h", + ] + public_deps = [ + ":proto", + ] + deps = [ + "//base", + ] +} diff --git a/chromium/testing/libfuzzer/fuzzers/prtime_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/prtime_fuzzer.cc deleted file mode 100644 index c8aef215902..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/prtime_fuzzer.cc +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 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 <stddef.h> -#include <stdint.h> - -#include <string> - -#include "base/third_party/nspr/prtime.h" - -PRTime parsed_time; - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - if (size < 1) - return 0; - - const uint8_t selector = data[0]; - - // Using std::string instead of a (potentially faster) fixed buffer to catch - // accesses beyond the end of the string. - std::string str(reinterpret_cast<const char*>(data+1), size - 1); - PR_ParseTimeString(str.c_str(), selector & 1, &parsed_time); - - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/sha1_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/sha1_fuzzer.cc deleted file mode 100644 index 26224331af6..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/sha1_fuzzer.cc +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 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 <stddef.h> -#include <stdint.h> - -#include "base/sha1.h" - -// Entry point for LibFuzzer. -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - unsigned char sha1[base::kSHA1Length] = {}; - base::SHA1HashBytes(data, size, sha1); - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/skia_image_filter_proto_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/skia_image_filter_proto_fuzzer.cc deleted file mode 100644 index 62e10c08fbb..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/skia_image_filter_proto_fuzzer.cc +++ /dev/null @@ -1,71 +0,0 @@ -// 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. - -// Takes an Input protobuf message from libprotobuf-mutator, converts it to an -// actual skia image filter and then applies it to a canvas for the purpose of -// fuzzing skia. This should uncover bugs that could be used by a compromised -// renderer to exploit the browser process. - -#include <stdlib.h> - -#include <iostream> -#include <string> - -#include "testing/libfuzzer/proto/skia_image_filter_proto_converter.h" - -#include "base/process/memory.h" -#include "base/test/test_discardable_memory_allocator.h" -#include "third_party/libprotobuf-mutator/src/src/libfuzzer/libfuzzer_macro.h" -#include "third_party/skia/include/core/SkBitmap.h" -#include "third_party/skia/include/core/SkCanvas.h" -#include "third_party/skia/include/core/SkImageFilter.h" - -protobuf_mutator::protobuf::LogSilencer log_silencer; - -using skia_image_filter_proto_converter::Input; -using skia_image_filter_proto_converter::Converter; - -static const int kBitmapSize = 24; - -struct Environment { - base::TestDiscardableMemoryAllocator* discardable_memory_allocator; - Environment() { - base::EnableTerminationOnOutOfMemory(); - discardable_memory_allocator = new base::TestDiscardableMemoryAllocator(); - base::DiscardableMemoryAllocator::SetInstance(discardable_memory_allocator); - } -}; - -DEFINE_PROTO_FUZZER(const Input& input) { - static Environment environment = Environment(); - ALLOW_UNUSED_LOCAL(environment); - - static Converter converter = Converter(); - std::string ipc_filter_message = converter.Convert(input); - - // Allow the flattened skia filter to be retrieved easily. - if (getenv("LPM_DUMP_NATIVE_INPUT")) { - // Don't write a newline since it will make the output invalid (so that it - // cannot be fed to filter_fuzz_stub) Flush instead. - std::cout << ipc_filter_message << std::flush; - } - - sk_sp<SkImageFilter> flattenable = SkImageFilter::Deserialize( - ipc_filter_message.c_str(), ipc_filter_message.size()); - - if (!flattenable) - return; - - SkBitmap bitmap; - bitmap.allocN32Pixels(kBitmapSize, kBitmapSize); - SkCanvas canvas(bitmap); - canvas.clear(0x00000000); - SkPaint paint; - paint.setImageFilter(flattenable); - canvas.save(); - canvas.clipRect(SkRect::MakeXYWH(0, 0, SkIntToScalar(kBitmapSize), - SkIntToScalar(kBitmapSize))); - canvas.drawBitmap(bitmap, 0, 0, &paint); - canvas.restore(); -} diff --git a/chromium/testing/libfuzzer/fuzzers/skia_path_common.cc b/chromium/testing/libfuzzer/fuzzers/skia_path_common.cc deleted file mode 100644 index 0c1c6024e73..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/skia_path_common.cc +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2016 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 "testing/libfuzzer/fuzzers/skia_path_common.h" - -#include "third_party/skia/include/core/SkPath.h" - -// This is needed because SkPath::readFromMemory does not seem to be able to -// be able to handle arbitrary input. -void BuildPath(const uint8_t** data, - size_t* size, - SkPath* path, - int last_verb) { - uint8_t operation; - SkScalar a, b, c, d, e, f; - while (read<uint8_t>(data, size, &operation)) { - switch (operation % (last_verb + 1)) { - case SkPath::Verb::kMove_Verb: - if (!read<SkScalar>(data, size, &a) || !read<SkScalar>(data, size, &b)) - return; - path->moveTo(a, b); - break; - - case SkPath::Verb::kLine_Verb: - if (!read<SkScalar>(data, size, &a) || !read<SkScalar>(data, size, &b)) - return; - path->lineTo(a, b); - break; - - case SkPath::Verb::kQuad_Verb: - if (!read<SkScalar>(data, size, &a) || - !read<SkScalar>(data, size, &b) || - !read<SkScalar>(data, size, &c) || - !read<SkScalar>(data, size, &d)) - return; - path->quadTo(a, b, c, d); - break; - - case SkPath::Verb::kConic_Verb: - if (!read<SkScalar>(data, size, &a) || - !read<SkScalar>(data, size, &b) || - !read<SkScalar>(data, size, &c) || - !read<SkScalar>(data, size, &d) || - !read<SkScalar>(data, size, &e)) - return; - path->conicTo(a, b, c, d, e); - break; - - case SkPath::Verb::kCubic_Verb: - if (!read<SkScalar>(data, size, &a) || - !read<SkScalar>(data, size, &b) || - !read<SkScalar>(data, size, &c) || - !read<SkScalar>(data, size, &d) || - !read<SkScalar>(data, size, &e) || - !read<SkScalar>(data, size, &f)) - return; - path->cubicTo(a, b, c, d, e, f); - break; - - case SkPath::Verb::kClose_Verb: - path->close(); - break; - - case SkPath::Verb::kDone_Verb: - // In this case, simply exit. - return; - } - } -} diff --git a/chromium/testing/libfuzzer/fuzzers/skia_path_common.h b/chromium/testing/libfuzzer/fuzzers/skia_path_common.h deleted file mode 100644 index ddfab8361f7..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/skia_path_common.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 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. - -#ifndef TESTING_LIBFUZZER_FUZZERS_SKIA_PATH_COMMON_H_ -#define TESTING_LIBFUZZER_FUZZERS_SKIA_PATH_COMMON_H_ - -#include "third_party/skia/include/core/SkPath.h" - -template <typename T> -static bool read(const uint8_t** data, size_t* size, T* value) { - if (*size < sizeof(T)) - return false; - - *value = *reinterpret_cast<const T*>(*data); - *data += sizeof(T); - *size -= sizeof(T); - return true; -} - -void BuildPath(const uint8_t** data, - size_t* size, - SkPath* path, - int last_verb); - -#endif // TESTING_LIBFUZZER_FUZZERS_SKIA_PATH_COMMON_H_ diff --git a/chromium/testing/libfuzzer/fuzzers/skia_path_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/skia_path_fuzzer.cc deleted file mode 100644 index 5b8e6c7b824..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/skia_path_fuzzer.cc +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2016 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 <stddef.h> -#include <stdint.h> - -#include "testing/libfuzzer/fuzzers/skia_path_common.h" -#include "third_party/skia/include/core/SkCanvas.h" -#include "third_party/skia/include/core/SkPaint.h" -#include "third_party/skia/include/core/SkPath.h" -#include "third_party/skia/include/core/SkSurface.h" - - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - uint8_t w, h, anti_alias; - if (!read<uint8_t>(&data, &size, &w)) - return 0; - if (!read<uint8_t>(&data, &size, &h)) - return 0; - if (!read<uint8_t>(&data, &size, &anti_alias)) - return 0; - - SkScalar a, b, c, d; - if (!read<SkScalar>(&data, &size, &a)) - return 0; - if (!read<SkScalar>(&data, &size, &b)) - return 0; - if (!read<SkScalar>(&data, &size, &c)) - return 0; - if (!read<SkScalar>(&data, &size, &d)) - return 0; - - // In this case, we specifically don't want to include kDone_Verb. - SkPath path; - BuildPath(&data, &size, &path, SkPath::Verb::kClose_Verb); - - // Try a few potentially interesting things with our path. - path.contains(a, b); - path.conservativelyContainsRect(SkRect::MakeLTRB(a, b, c, d)); - - SkPaint paint_fill; - paint_fill.setStyle(SkPaint::Style::kFill_Style); - paint_fill.setAntiAlias(anti_alias & 1); - - SkPaint paint_stroke; - paint_stroke.setStyle(SkPaint::Style::kStroke_Style); - paint_stroke.setStrokeWidth(1); - paint_stroke.setAntiAlias(anti_alias & 1); - - SkPaint paint_stroke_and_fill; - paint_stroke_and_fill.setStyle(SkPaint::Style::kStrokeAndFill_Style); - paint_stroke_and_fill.setStrokeWidth(1); - paint_stroke_and_fill.setAntiAlias(anti_alias & 1); - - SkPath dst_path; - paint_stroke.getFillPath(path, &dst_path, nullptr); - - // Width and height should never be 0. - auto surface(SkSurface::MakeRasterN32Premul(w ? w : 1, h ? h : 1)); - - surface->getCanvas()->drawPath(path, paint_fill); - surface->getCanvas()->drawPath(path, paint_stroke); - surface->getCanvas()->drawPath(path, paint_stroke_and_fill); - - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/skia_pathop_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/skia_pathop_fuzzer.cc deleted file mode 100644 index bd43bf282da..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/skia_pathop_fuzzer.cc +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2016 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 <stddef.h> -#include <stdint.h> - -#include "base/logging.h" -#include "testing/libfuzzer/fuzzers/skia_path_common.h" -#include "third_party/skia/include/core/SkPath.h" -#include "third_party/skia/include/pathops/SkPathOps.h" - -struct Environment { - Environment() { - // Disable noisy logging as per "libFuzzer in Chrome" documentation: - // testing/libfuzzer/getting_started.md#Disable-noisy-error-message-logging. - logging::SetMinLogLevel(logging::LOG_FATAL); - } -}; - -Environment* env = new Environment(); - -const int kLastOp = SkPathOp::kReverseDifference_SkPathOp; - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - SkOpBuilder builder; - while (size > 0) { - SkPath path; - uint8_t op; - if (!read<uint8_t>(&data, &size, &op)) - break; - - BuildPath(&data, &size, &path, SkPath::Verb::kDone_Verb); - builder.add(path, static_cast<SkPathOp>(op % (kLastOp + 1))); - } - - SkPath result; - builder.resolve(&result); - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/snappy_compress_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/snappy_compress_fuzzer.cc deleted file mode 100644 index ad1ca9747f2..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/snappy_compress_fuzzer.cc +++ /dev/null @@ -1,21 +0,0 @@ -// 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/logging.h" -#include "third_party/snappy/src/snappy.h" - -// Entry point for LibFuzzer. -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - const char* uncompressed = reinterpret_cast<const char*>(data); - std::string compressed; - snappy::Compress(uncompressed, size, &compressed); - CHECK(snappy::IsValidCompressedBuffer(compressed.data(), compressed.size())); - - std::string uncompressed_after_compress; - CHECK(snappy::Uncompress(compressed.data(), compressed.size(), - &uncompressed_after_compress)); - CHECK_EQ(uncompressed_after_compress, std::string(uncompressed, size)); - - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/snappy_uncompress_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/snappy_uncompress_fuzzer.cc deleted file mode 100644 index 3bb9b55d876..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/snappy_uncompress_fuzzer.cc +++ /dev/null @@ -1,25 +0,0 @@ -// 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. - -#include <stddef.h> -#include <stdint.h> - -#include "third_party/snappy/src/snappy-sinksource.h" -#include "third_party/snappy/src/snappy.h" - -// Entry point for LibFuzzer. -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - snappy::ByteArraySource src(reinterpret_cast<const char*>(data), size); - uint32_t len; - // Note: src is invalid after GetUncompressedLength call. - if (!snappy::GetUncompressedLength(&src, &len) || (len > 1E6)) { - // We have to bail out, to avoid self-crafted decompression bombs. - return 0; - } - - std::string uncompressed_str; - snappy::Uncompress(reinterpret_cast<const char*>(data), size, - &uncompressed_str); - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/template_url_parser_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/template_url_parser_fuzzer.cc deleted file mode 100644 index 64e91223dd7..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/template_url_parser_fuzzer.cc +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2016 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 <stddef.h> -#include <stdint.h> - -#include <random> -#include <string> - -#include "libxml/parser.h" - -#include "base/at_exit.h" -#include "base/command_line.h" -#include "base/i18n/icu_util.h" -#include "components/search_engines/search_terms_data.h" -#include "components/search_engines/template_url.h" -#include "components/search_engines/template_url_parser.h" - -class PseudoRandomFilter : public TemplateURLParser::ParameterFilter { - public: - explicit PseudoRandomFilter(uint32_t seed) : generator_(seed), pool_(0, 1) {} - ~PseudoRandomFilter() override = default; - - bool KeepParameter(const std::string&, const std::string&) override { - // Return true 254/255 times, ie: as if pool_ only returned uint8_t. - return pool_(generator_) % (UINT8_MAX + 1); - } - - private: - std::mt19937 generator_; - // Use a uint16_t here instead of uint8_t because uniform_int_distribution - // does not support 8 bit types on Windows. - std::uniform_int_distribution<uint16_t> pool_; -}; - -struct FuzzerFixedParams { - uint32_t seed_; -}; - -base::AtExitManager at_exit_manager; // used by ICU integration - -extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) { - CHECK(base::i18n::InitializeICU()); - CHECK(base::CommandLine::Init(*argc, *argv)); - return 0; -} - -void ignore(void* ctx, const char* msg, ...) { - // Error handler to avoid error message spam from libxml parser. -} - -class Env { - public: - Env() { xmlSetGenericErrorFunc(NULL, &ignore); } -}; - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - static Env env; - if (size < sizeof(FuzzerFixedParams)) { - return 0; - } - const FuzzerFixedParams* params = - reinterpret_cast<const FuzzerFixedParams*>(data); - size -= sizeof(FuzzerFixedParams); - const char* char_data = reinterpret_cast<const char*>(params + 1); - PseudoRandomFilter filter(params->seed_); - TemplateURLParser::Parse(SearchTermsData(), char_data, size, &filter); - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/url.proto b/chromium/testing/libfuzzer/fuzzers/url.proto deleted file mode 100644 index 9148a0ddc2a..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/url.proto +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2017 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. - -// This file contains the definition of the Url protobuf used in the -// url_parse_proto_fuzzer that is meant to serve as an example for future -// Chromium fuzzers that use libprotobuf-mutator. -// We will consider the format of a URL for this fuzzer, to be -// [scheme:][//[user[:password]@]host[:port]][/path][?query][#value] -// There may be some URLs Chromium treats as valid that this syntax does not -// capture. However, we will ignore them for the sake of simplicity. -// It is recommended to read this file in conjunction with -// convert_protobuf_to_string() in url_parse_proto_fuzzer.cc as logic in this -// function is sometimes used to ensure that the Url Protocol Buffer obeys the -// syntax we have defined for URLs. Though reading it is completely unecessary -// for understand this fuzzer, we have roughly followed RFC 3986 -// (https://tools.ietf.org/html/rfc3986) which defines the syntax of URIs (which -// URLs are a subset of). - -syntax = "proto2"; - -package url_parse_proto_fuzzer; - -// Here we define the format for a Url Protocol Buffer. This will be passed to -// our fuzzer function. -message Url { - // If there is a scheme, then it must be followed by a colon. A scheme is in - // practice not required in a URL. Therefore, we will define the scheme as - // optional but ensure it is followed by a colon in our conversion code if it - // is included. - optional string scheme = 1; - - enum Slash { - NONE = 0; // Seperate path segments using "" - FORWARD = 1; // Seperate path segments using / - BACKWARD = 2; // Seperate path segments using \ - } - // The syntax rules of the two slashes that precede the host in a URL are - // surprisingly complex. They are not required, even if a scheme is included - // (http:example.com is treated as valid), and are valid even if a scheme is - // not included (//example.com is treated as file:///example.com). They can - // even be backslashes (http:\\example.com and http\/example.com are both - // valid) and there can be any number of them (http:/example.com and - // http://////example.com are both valid). - // We will therefore define slashes as a list of enum values (repeated Slash). - // In our conversion code, this will be read to append the appropriate kind and - // appropriate number of slashes to the URL. - repeated Slash slashes = 2 [packed=true]; - - - // The [user:password@] part of the URL shown above is called the userinfo. - // Userinfo is not mandatory, but if it is included in a URL, then it must - // contain a string called user. There is another optional field in userinfo - // called the password. If a password is included, the user must be separated - // from it by ":". In either case, the userinfo must be separated from the - // host by "@". A URL must have a host if it has a userinfo. - // These requirements will be ensured by the conversion code. - message Userinfo { - required string user = 1; - optional string password = 2; - } - optional Userinfo userinfo = 3; - - // Hosts, like most else in our Url definition, are optional (there are - // are URLs such as data URLs that do not have hosts). - optional string host = 4; - - // ports are unsigned integers between 1-2^16. The closest type to this in the - // proto2 format is uint32. Also if a port number is specified it must be - // preceded by a colon (consider "google.com80" 80 will be interpreted as part - // of the host). The conversion code will ensure this is the case. - optional uint32 port = 5; - - // The rules for the path are somewhat complex. A path is not required, - // however if it follows a port or host, it must start with "/" according - // to the RFC, though Chromium accepts "\" as it converts all backslashes to - // slashes. It does not need to start with "/" if there is no host (in data - // URLs for example). Thus we will define path as a repeated string where each - // member contains a segment of the path and will be preceded by the - // path_separator. The one exception to this is for the first segment if - // path_seperator == NONE and there is a non empty path and host, then the - // first segment will be preceeded by "/". - repeated string path = 6; - required Slash path_separator = 7 [default = FORWARD]; - - // A query must preceded by "?". This will be ensured in the conversion - // code. Queries can have many components which the converter will separate - // using "&", as is the convention. - repeated string query = 8; - - // A fragment must preceded by "#". This will be ensured in the conversion - // code. - optional string fragment = 9; -} diff --git a/chromium/testing/libfuzzer/fuzzers/url_parse_proto_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/url_parse_proto_fuzzer.cc deleted file mode 100644 index 67097b848d2..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/url_parse_proto_fuzzer.cc +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2017 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 <assert.h> -#include <stdlib.h> - -#include <iostream> - -// Includes copied from url_parse_fuzzer.cc -#include "base/at_exit.h" -#include "base/i18n/icu_util.h" -#include "url/gurl.h" - -// Includes *not* copied from url_parse_fuzzer.cc -// Contains DEFINE_BINARY_PROTO_FUZZER, a macro we use to define our target -// function. -#include "third_party/libprotobuf-mutator/src/src/libfuzzer/libfuzzer_macro.h" -// Header information about the Protocol Buffer Url class. -#include "testing/libfuzzer/fuzzers/url.pb.h" - -// The code using TestCase is copied from url_parse_fuzzer.cc -struct TestCase { - TestCase() { - CHECK(base::i18n::InitializeICU()); - } - // used by ICU integration. - base::AtExitManager at_exit_manager; -}; - -TestCase* test_case = new TestCase(); - -// Silence logging from the protobuf library. -protobuf_mutator::protobuf::LogSilencer log_silencer; - -using namespace url_parse_proto_fuzzer; - -std::string Slash_to_string(int slash) { - if (slash == Url::NONE) - return ""; - if (slash == Url::FORWARD) - return "/"; - if (slash == Url::BACKWARD) { - return "\\"; - } - assert(false && "Received unexpected value for slash"); - // Silence compiler warning about not returning in non-void function. - return ""; -} - -// Converts a URL in Protocol Buffer format to a url in string format. -// Since protobuf is a relatively simple format, fuzzing targets that do not -// accept protobufs (such as this one) will require code to convert from -// protobuf to the accepted format (string in this case). -std::string protobuf_to_string(const Url& url) { - // Build url_string piece by piece from url and then return it. - std::string url_string = std::string(""); - - if (url.has_scheme()) { // Get the scheme if Url has it. - // Append the scheme to the url. This may be empty. Then append a colon - // which is mandatory if there is a scheme. - url_string += url.scheme() + ":"; - } - - // Just append the slashes without doing validation, since it would be too - // complex. libFuzzer will hopefully figure out good values. - for (const int slash : url.slashes()) - url_string += Slash_to_string(slash); - - // Get host. This is simple since hosts are simply strings according to our - // definition. - if (url.has_host()) { - // Get userinfo if libFuzzer set it. Ensure that user is seperated - // from the password by ":" (if a password is included) and that userinfo is - // separated from the host by "@". - if (url.has_userinfo()) { - url_string += url.userinfo().user(); - if (url.userinfo().has_password()) { - url_string += ":"; - url_string += url.userinfo().password(); - } - url_string += "@"; - } - url_string += url.host(); - - // As explained in url.proto, if libFuzzer included a port in url ensure - // that it is preceded by the host and then ":". - if (url.has_port()) - // Convert url.port() from an unsigned 32 bit int before appending it. - url_string += ":" + std::to_string(url.port()); - } - - // Append the path segments to the url, with each segment separated by - // the path_separator. - bool first_segment = true; - std::string path_separator = Slash_to_string(url.path_separator()); - for (const std::string& path_segment : url.path()) { - // There does not need to be a path, but if there is a path and a host, - // ensure the path begins with "/". - if (url.has_host() && first_segment) { - url_string += "/" + path_segment; - first_segment = false; - } else - url_string += path_separator + path_segment; - } - - // Queries must be started by "?". If libFuzzer included a query in url, - // ensure that it is preceded by "?". Also Seperate query components with - // ampersands as is the convention. - bool first_component = true; - for (const std::string& query_component : url.query()) { - if (first_component) { - url_string += "?" + query_component; - first_component = false; - } else - url_string += "&" + query_component; - } - - // Fragments must be started by "#". If libFuzzer included a fragment - // in url, ensure that it is preceded by "#". - if (url.has_fragment()) - url_string += "#" + url.fragment(); - - return url_string; -} - -// The target function. This is the equivalent of LLVMFuzzerTestOneInput in -// typical libFuzzer based fuzzers. It is passed our Url protobuf object that -// was mutated by libFuzzer, converts it to a string and then feeds it to url() -// for fuzzing. -DEFINE_BINARY_PROTO_FUZZER(const Url& url_protobuf) { - std::string url_string = protobuf_to_string(url_protobuf); - - // Allow native input to be retrieved easily. - // Note that there will be a trailing newline that is not part of url_string. - if (getenv("LPM_DUMP_NATIVE_INPUT")) - std::cout << url_string << std::endl; - - GURL url(url_string); -} diff --git a/chromium/testing/libfuzzer/fuzzers/usrsctp_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/usrsctp_fuzzer.cc deleted file mode 100644 index a6a8f4f410b..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/usrsctp_fuzzer.cc +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 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 <stddef.h> -#include <stdint.h> - -#include "third_party/usrsctp/usrsctplib/usrsctplib/usrsctp.h" - -static int ignore1(void* addr, - void* data, - size_t length, - uint8_t tos, - uint8_t set_df) { - return 0; -} - -static void ignore2(const char* format, ...) {} - -struct Environment { - Environment() { - usrsctp_init(0, ignore1, ignore2); - } -}; - -Environment* env = new Environment(); - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - usrsctp_conninput(nullptr, data, size, 0); - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/v8_fuzzer.cc b/chromium/testing/libfuzzer/fuzzers/v8_fuzzer.cc deleted file mode 100644 index d495d10818a..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/v8_fuzzer.cc +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2017 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 <chrono> -#include <functional> -#include <iostream> -#include <mutex> -#include <thread> - -#include "base/logging.h" -#include "v8/include/libplatform/libplatform.h" -#include "v8/include/v8.h" - -using v8::MaybeLocal; -using std::ref; -using std::lock_guard; -using std::mutex; -using std::chrono::time_point; -using std::chrono::steady_clock; -using std::chrono::seconds; -using std::chrono::duration_cast; - -static const seconds kSleepSeconds(1); - -// Because of the sleep we do, the actual max will be: -// kSleepSeconds + kMaxExecutionSeconds. -// TODO(metzman): Determine if having such a short timeout causes too much -// indeterminism. -static const seconds kMaxExecutionSeconds(7); - -// Inspired by/copied from d8 code, this allocator will return nullptr when -// an allocation request is made that puts currently_allocated_ over -// kAllocationLimit (1 GB). Should handle the current allocations done by V8. -class MockArrayBufferAllocator : public v8::ArrayBuffer::Allocator { - std::unique_ptr<Allocator> allocator_ = - std::unique_ptr<Allocator>(NewDefaultAllocator()); - - const size_t kAllocationLimit = 1000 * 1024 * 1024; - // TODO(metzman): Determine if this approach where we keep track of state - // between runs is a good idea. Maybe we should simply prevent allocations - // over a certain size regardless of previous allocations. - size_t currently_allocated_; - mutex mtx_; - - public: - MockArrayBufferAllocator() - : v8::ArrayBuffer::Allocator(), currently_allocated_(0) {} - - void* Allocate(size_t length) override { - void* data = AllocateUninitialized(length); - return data == nullptr ? data : memset(data, 0, length); - } - - void* AllocateUninitialized(size_t length) override { - lock_guard<mutex> mtx_locker(mtx_); - if (length + currently_allocated_ > kAllocationLimit) { - return nullptr; - } - currently_allocated_ += length; - return malloc(length); - } - - void Free(void* ptr, size_t length) override { - lock_guard<mutex> mtx_locker(mtx_); - currently_allocated_ -= length; - // We need to free before we unlock, otherwise currently_allocated_ will - // be innacurate. - free(ptr); - } -}; - -void terminate_execution(v8::Isolate* isolate, - mutex& mtx, - bool& is_running, - time_point<steady_clock>& start_time) { - while (true) { - std::this_thread::sleep_for(kSleepSeconds); - mtx.lock(); - if (is_running) { - if (duration_cast<seconds>(steady_clock::now() - start_time) > - kMaxExecutionSeconds) { - isolate->TerminateExecution(); - is_running = false; - std::cout << "Terminated" << std::endl; - fflush(0); - } - } - mtx.unlock(); - } -} - -struct Environment { - Environment() { - platform_ = v8::platform::NewDefaultPlatform( - 0, v8::platform::IdleTaskSupport::kDisabled, - v8::platform::InProcessStackDumping::kDisabled, nullptr); - - v8::V8::InitializePlatform(platform_.get()); - v8::V8::Initialize(); - v8::Isolate::CreateParams create_params; - - create_params.array_buffer_allocator = &mock_arraybuffer_allocator; - isolate = v8::Isolate::New(create_params); - terminator_thread = std::thread(terminate_execution, isolate, ref(mtx), - ref(is_running), ref(start_time)); - } - MockArrayBufferAllocator mock_arraybuffer_allocator; - mutex mtx; - std::thread terminator_thread; - v8::Isolate* isolate; - std::unique_ptr<v8::Platform> platform_; - time_point<steady_clock> start_time; - bool is_running; -}; - -// Explicitly specify some attributes to avoid issues with the linker dead- -// stripping the following function on macOS, as it is not called directly -// by fuzz target. LibFuzzer runtime uses dlsym() to resolve that function. -extern "C" __attribute__((used)) __attribute__((visibility("default"))) int -LLVMFuzzerInitialize(int* argc, char*** argv) { - v8::V8::InitializeICUDefaultLocation((*argv)[0]); - v8::V8::InitializeExternalStartupData((*argv)[0]); - v8::V8::SetFlagsFromCommandLine(argc, *argv, true); - return 0; -} - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - static Environment* env = new Environment(); - - if (size < 1) - return 0; - - v8::Isolate::Scope isolate_scope(env->isolate); - v8::HandleScope handle_scope(env->isolate); - v8::Local<v8::Context> context = v8::Context::New(env->isolate); - v8::Context::Scope context_scope(context); - - std::string source_string = - std::string(reinterpret_cast<const char*>(data), size); - - MaybeLocal<v8::String> source_v8_string = v8::String::NewFromUtf8( - env->isolate, source_string.c_str(), v8::NewStringType::kNormal); - - if (source_v8_string.IsEmpty()) - return 0; - - v8::TryCatch try_catch(env->isolate); - MaybeLocal<v8::Script> script = - v8::Script::Compile(context, source_v8_string.ToLocalChecked()); - - if (script.IsEmpty()) - return 0; - - auto local_script = script.ToLocalChecked(); - env->mtx.lock(); - env->start_time = steady_clock::now(); - env->is_running = true; - env->mtx.unlock(); - - ALLOW_UNUSED_LOCAL(local_script->Run(context)); - - lock_guard<mutex> mtx_locker(env->mtx); - env->is_running = false; - return 0; -} diff --git a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/Ahem.woff2 b/chromium/testing/libfuzzer/fuzzers/woff2_corpus/Ahem.woff2 Binary files differdeleted file mode 100644 index 772932491bb..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/Ahem.woff2 +++ /dev/null diff --git a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/AhemSpaceLigature.woff2 b/chromium/testing/libfuzzer/fuzzers/woff2_corpus/AhemSpaceLigature.woff2 Binary files differdeleted file mode 100644 index dc15e79d28c..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/AhemSpaceLigature.woff2 +++ /dev/null diff --git a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/DejaVuSerif-webfont.woff2 b/chromium/testing/libfuzzer/fuzzers/woff2_corpus/DejaVuSerif-webfont.woff2 Binary files differdeleted file mode 100644 index 953010af44e..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/DejaVuSerif-webfont.woff2 +++ /dev/null diff --git a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/DejaVuSerif.woff2 b/chromium/testing/libfuzzer/fuzzers/woff2_corpus/DejaVuSerif.woff2 Binary files differdeleted file mode 100644 index b972c0877ac..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/DejaVuSerif.woff2 +++ /dev/null diff --git a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/EzraSIL.woff2 b/chromium/testing/libfuzzer/fuzzers/woff2_corpus/EzraSIL.woff2 Binary files differdeleted file mode 100644 index e987c38c958..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/EzraSIL.woff2 +++ /dev/null diff --git a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/LinLibertineO.woff2 b/chromium/testing/libfuzzer/fuzzers/woff2_corpus/LinLibertineO.woff2 Binary files differdeleted file mode 100644 index e843c8c188b..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/LinLibertineO.woff2 +++ /dev/null diff --git a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/MEgalopolisExtra.woff2 b/chromium/testing/libfuzzer/fuzzers/woff2_corpus/MEgalopolisExtra.woff2 Binary files differdeleted file mode 100644 index 2d0def4be55..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/MEgalopolisExtra.woff2 +++ /dev/null diff --git a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/OpenSans.woff2 b/chromium/testing/libfuzzer/fuzzers/woff2_corpus/OpenSans.woff2 Binary files differdeleted file mode 100644 index f898c34dacb..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/OpenSans.woff2 +++ /dev/null diff --git a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/mplus-1p-regular.woff2 b/chromium/testing/libfuzzer/fuzzers/woff2_corpus/mplus-1p-regular.woff2 Binary files differdeleted file mode 100644 index 171e366c545..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/mplus-1p-regular.woff2 +++ /dev/null diff --git a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/tcu-font.woff2 b/chromium/testing/libfuzzer/fuzzers/woff2_corpus/tcu-font.woff2 Binary files differdeleted file mode 100644 index df15e4cd1b0..00000000000 --- a/chromium/testing/libfuzzer/fuzzers/woff2_corpus/tcu-font.woff2 +++ /dev/null diff --git a/chromium/testing/libfuzzer/reproducing.md b/chromium/testing/libfuzzer/reproducing.md index 10ad0f2b0dc..6bf24b62c37 100644 --- a/chromium/testing/libfuzzer/reproducing.md +++ b/chromium/testing/libfuzzer/reproducing.md @@ -9,7 +9,8 @@ manually using the steps below: **Requirements:** For Windows, you must convert the forward slashes (/) to backslashes (\\) in the commands below and use `set` command instead of `export` to set the environment variable (step 4). Note that these commands are intended -to be used with cmd.exe, not PowerShell. +to be used with cmd.exe, not PowerShell. Also, you may find [these tips] on how +to debug an ASAN instrumented binary helpful. *** [TOC] @@ -109,3 +110,4 @@ you will be able to test the fix locally and/or somehow debug the issue. [ClusterFuzz Reproduce Tool]: https://github.com/google/clusterfuzz-tools [File a bug]: https://bugs.chromium.org/p/chromium/issues/entry?component=Tools%3EStability%3ElibFuzzer&comment=What%20problem%20are%20you%20seeing [here]: getting_started.md#symbolize-stacktrace +[these tips]: https://github.com/google/sanitizers/wiki/AddressSanitizerWindowsPort#debugging diff --git a/chromium/testing/merge_scripts/PRESUBMIT.py b/chromium/testing/merge_scripts/PRESUBMIT.py index 22a57f28835..3ba0cf17fab 100644 --- a/chromium/testing/merge_scripts/PRESUBMIT.py +++ b/chromium/testing/merge_scripts/PRESUBMIT.py @@ -10,7 +10,7 @@ for more details about the presubmit API built into depot_tools. def CommonChecks(input_api, output_api): return input_api.canned_checks.RunUnitTestsInDirectory( - input_api, output_api, '.', [ r'^.+_unittest\.py$']) + input_api, output_api, '.', [ r'^.+_test\.py$']) def CheckChangeOnUpload(input_api, output_api): return CommonChecks(input_api, output_api) diff --git a/chromium/testing/merge_scripts/code_coverage/OWNERS b/chromium/testing/merge_scripts/code_coverage/OWNERS new file mode 100644 index 00000000000..c3d0dbb291d --- /dev/null +++ b/chromium/testing/merge_scripts/code_coverage/OWNERS @@ -0,0 +1,3 @@ +liaoyuke@chromium.org +robertocn@chromium.org +sajjadm@chromium.org diff --git a/chromium/testing/merge_scripts/code_coverage/merge_lib.py b/chromium/testing/merge_scripts/code_coverage/merge_lib.py new file mode 100644 index 00000000000..8e40f446ae7 --- /dev/null +++ b/chromium/testing/merge_scripts/code_coverage/merge_lib.py @@ -0,0 +1,199 @@ +# Copyright 2019 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. +"""Functions for interacting with llvm-profdata""" + +import logging +import multiprocessing +import os +import subprocess + +logging.basicConfig( + format='[%(asctime)s %(levelname)s] %(message)s', level=logging.DEBUG) + + +def _call_profdata_tool(profile_input_file_paths, + profile_output_file_path, + profdata_tool_path, + retries=3): + """Calls the llvm-profdata tool. + + Args: + profile_input_file_paths: A list of relative paths to the files that + are to be merged. + profile_output_file_path: The path to the merged file to write. + profdata_tool_path: The path to the llvm-profdata executable. + + Returns: + A list of paths to profiles that had to be excluded to get the merge to + succeed, suspected of being corrupted or malformed. + + Raises: + CalledProcessError: An error occurred merging profiles. + """ + logging.info('Merging profiles.') + + try: + subprocess_cmd = [ + profdata_tool_path, 'merge', '-o', profile_output_file_path, + '-sparse=true' + ] + subprocess_cmd.extend(profile_input_file_paths) + + # Redirecting stderr is required because when error happens, llvm-profdata + # writes the error output to stderr and our error handling logic relies on + # that output. + output = subprocess.check_output(subprocess_cmd, stderr=subprocess.STDOUT) + logging.info('Merge succeeded with output: %r', output) + except subprocess.CalledProcessError as error: + if len(profile_input_file_paths) > 1 and retries >= 0: + logging.warning('Merge failed with error output: %r', error.output) + + # The output of the llvm-profdata command will include the path of + # malformed files, such as + # `error: /.../default.profraw: Malformed instrumentation profile data` + invalid_profiles = [ + f for f in profile_input_file_paths if f in error.output + ] + + if not invalid_profiles: + logging.info( + 'Merge failed, but wasn\'t able to figure out the culprit invalid ' + 'profiles from the output, so skip retry and bail out.') + raise error + + valid_profiles = list( + set(profile_input_file_paths) - set(invalid_profiles)) + if valid_profiles: + logging.warning( + 'Following invalid profiles are removed as they were mentioned in ' + 'the merge error output: %r', invalid_profiles) + logging.info('Retry merging with the remaining profiles: %r', + valid_profiles) + return invalid_profiles + _call_profdata_tool( + valid_profiles, profile_output_file_path, profdata_tool_path, + retries - 1) + + logging.error('Failed to merge profiles, return code (%d), output: %r' % + (error.returncode, error.output)) + raise error + + logging.info('Profile data is created as: "%r".', profile_output_file_path) + return [] + + +def _get_profile_paths(input_dir, input_extension): + """Finds all the profiles in the given directory (recursively).""" + paths = [] + for dir_path, _sub_dirs, file_names in os.walk(input_dir): + paths.extend([ + os.path.join(dir_path, fn) + for fn in file_names + if fn.endswith(input_extension) + ]) + return paths + + +def _validate_and_convert_profraws(profraw_files, profdata_tool_path): + """Validates and converts profraws to profdatas. + + For each given .profraw file in the input, this method first validates it by + trying to convert it to an indexed .profdata file, and if the validation and + conversion succeeds, the generated .profdata file will be included in the + output, otherwise, won't. + + This method is mainly used to filter out invalid profraw files. + + Args: + profraw_files: A list of .profraw paths. + profdata_tool_path: The path to the llvm-profdata executable. + + Returns: + A tulple: + A list of converted .profdata files of *valid* profraw files. + A list of *invalid* profraw files. + """ + logging.info('Validating and converting .profraw files.') + + for profraw_file in profraw_files: + if not profraw_file.endswith('.profraw'): + raise RuntimeError('%r is expected to be a .profraw file.' % profraw_file) + + cpu_count = multiprocessing.cpu_count() + counts = max(10, cpu_count - 5) # Use 10+ processes, but leave 5 cpu cores. + pool = multiprocessing.Pool(counts) + output_profdata_files = multiprocessing.Manager().list() + invalid_profraw_files = multiprocessing.Manager().list() + + for profraw_file in profraw_files: + pool.apply_async(_validate_and_convert_profraw, + (profraw_file, output_profdata_files, + invalid_profraw_files, profdata_tool_path)) + + pool.close() + pool.join() + + # Remove inputs, as they won't be needed and they can be pretty large. + for input_file in profraw_files: + os.remove(input_file) + + return list(output_profdata_files), list(invalid_profraw_files) + + +def _validate_and_convert_profraw(profraw_file, output_profdata_files, + invalid_profraw_files, profdata_tool_path): + output_profdata_file = profraw_file.replace('.profraw', '.profdata') + subprocess_cmd = [ + profdata_tool_path, 'merge', '-o', output_profdata_file, '-sparse=true', + profraw_file + ] + + try: + # Redirecting stderr is required because when error happens, llvm-profdata + # writes the error output to stderr and our error handling logic relies on + # that output. + output = subprocess.check_output(subprocess_cmd, stderr=subprocess.STDOUT) + logging.info('Validating and converting %r to %r succeeded with output: %r', + profraw_file, output_profdata_file, output) + output_profdata_files.append(output_profdata_file) + except subprocess.CalledProcessError as error: + logging.warning('Validating and converting %r to %r failed with output: %r', + profraw_file, output_profdata_file, error.output) + invalid_profraw_files.append(profraw_file) + + +def merge_profiles(input_dir, output_file, input_extension, profdata_tool_path): + """Merges the profiles produced by the shards using llvm-profdata. + + Args: + input_dir (str): The path to traverse to find input profiles. + output_file (str): Where to write the merged profile. + input_extension (str): File extension to look for in the input_dir. + e.g. '.profdata' or '.profraw' + profdata_tool_path: The path to the llvm-profdata executable. + Returns: + The list of profiles that had to be excluded to get the merge to + succeed. + """ + profile_input_file_paths = _get_profile_paths(input_dir, input_extension) + invalid_profraw_files = [] + if input_extension == '.profraw': + profile_input_file_paths, invalid_profraw_files = ( + _validate_and_convert_profraws(profile_input_file_paths, + profdata_tool_path)) + logging.info('List of converted .profdata files: %r', + profile_input_file_paths) + logging.info(( + 'List of invalid .profraw files that failed to validate and convert: %r' + ), invalid_profraw_files) + + invalid_profdata_files = _call_profdata_tool( + profile_input_file_paths=profile_input_file_paths, + profile_output_file_path=output_file, + profdata_tool_path=profdata_tool_path) + + # Remove inputs, as they won't be needed and they can be pretty large. + for input_file in profile_input_file_paths: + os.remove(input_file) + + return invalid_profraw_files + invalid_profdata_files diff --git a/chromium/testing/merge_scripts/code_coverage/merge_results.py b/chromium/testing/merge_scripts/code_coverage/merge_results.py new file mode 100755 index 00000000000..06b570d5570 --- /dev/null +++ b/chromium/testing/merge_scripts/code_coverage/merge_results.py @@ -0,0 +1,93 @@ +#!/usr/bin/python +# Copyright 2019 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. +"""Merge results from code coverage swarming runs. + +This script merges code coverage profiles from multiple shards. It also merges +the test results of the shards. + +It is functionally similar to merge_steps.py but it accepts the parameters +passed by swarming api. +""" + +import argparse +import json +import logging +import os +import subprocess +import sys + +import merge_lib as coverage_merger + + +def _MergeAPIArgumentParser(*args, **kwargs): + """Parameters passed to this merge script, as per: + https://chromium.googlesource.com/chromium/tools/build/+/master/scripts/slave/recipe_modules/swarming/resources/merge_api.py + """ + parser = argparse.ArgumentParser(*args, **kwargs) + parser.add_argument('--build-properties', help=argparse.SUPPRESS) + parser.add_argument('--summary-json', help=argparse.SUPPRESS) + parser.add_argument('--task-output-dir', help=argparse.SUPPRESS) + parser.add_argument( + '-o', '--output-json', required=True, help=argparse.SUPPRESS) + parser.add_argument('jsons_to_merge', nargs='*', help=argparse.SUPPRESS) + + # Custom arguments for this merge script. + parser.add_argument( + '--additional-merge-script', help='additional merge script to run') + parser.add_argument( + '--additional-merge-script-args', + help='args for the additional merge script', action='append') + parser.add_argument( + '--profdata-dir', required=True, help='where to store the merged data') + parser.add_argument( + '--llvm-profdata', required=True, help='path to llvm-profdata executable') + return parser + + +def main(): + desc = "Merge profraw files in <--task-output-dir> into a single profdata." + parser = _MergeAPIArgumentParser(description=desc) + params = parser.parse_args() + + logging.info('Merging %d test results', len(params.jsons_to_merge)) + + failed = False + + if params.additional_merge_script: + new_args = [ + '--build-properties', params.build_properties, + '--summary-json', params.summary_json, + '--task-output-dir', params.task_output_dir, + '--output-json', params.output_json, + ] + if params.additional_merge_script_args: + new_args += params.additional_merge_script_args + + new_args += params.jsons_to_merge + + rc = subprocess.call([ + sys.executable, params.additional_merge_script] + new_args) + if rc != 0: + failed = True + logging.warning('Additional merge script %s exited with %s' % ( + params.additional_merge_script, p.returncode + )) + + invalid_profiles = coverage_merger.merge_profiles( + params.task_output_dir, + os.path.join(params.profdata_dir, 'default.profdata'), '.profraw', + params.llvm_profdata) + if invalid_profiles: + with open(os.path.join(params.profdata_dir, 'invalid_profiles.json'), + 'w') as f: + json.dump(invalid_profiles, f) + + return 1 if (failed or bool(invalid_profiles)) else 0 + + +if __name__ == '__main__': + logging.basicConfig( + format='[%(asctime)s %(levelname)s] %(message)s', level=logging.INFO) + sys.exit(main()) diff --git a/chromium/testing/merge_scripts/code_coverage/merge_results_test.py b/chromium/testing/merge_scripts/code_coverage/merge_results_test.py new file mode 100755 index 00000000000..5cbe5c229f8 --- /dev/null +++ b/chromium/testing/merge_scripts/code_coverage/merge_results_test.py @@ -0,0 +1,197 @@ +#!/usr/bin/env vpython +# Copyright 2019 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 json +import os +import subprocess +import sys +import unittest + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert( + 0, os.path.abspath(os.path.join(THIS_DIR, os.pardir, os.pardir, os.pardir, + 'third_party', 'pymock'))) + +import mock + +import merge_profiles +import merge_steps +import merge_lib as merger + + +class MergeProfilesTest(unittest.TestCase): + + def __init__(self, *args, **kwargs): + super(MergeProfilesTest, self).__init__(*args, **kwargs) + self.maxDiff = None + + def test_merge_script_api_parameters(self): + """Test the step-level merge front-end.""" + build_properties = json.dumps({ + 'some': { + 'complicated': ['nested', { + 'json': None, + 'object': 'thing', + }] + } + }) + task_output_dir = 'some/task/output/dir' + profdata_dir = '/some/different/path/to/profdata/default.profdata' + profdata_file = os.path.join(profdata_dir, 'default.profdata') + args = [ + 'script_name', '--output-json', 'output.json', '--build-properties', + build_properties, '--summary-json', 'summary.json', '--task-output-dir', + task_output_dir, '--profdata-dir', profdata_dir, '--llvm-profdata', + 'llvm-profdata', 'a.json', 'b.json', 'c.json' + ] + with mock.patch.object(merger, 'merge_profiles') as mock_merge: + mock_merge.return_value = None + with mock.patch.object(sys, 'argv', args): + merge_profiles.main() + self.assertEqual( + mock_merge.call_args, + mock.call(task_output_dir, profdata_file, '.profraw', + 'llvm-profdata')) + + def test_merge_steps_parameters(self): + """Test the build-level merge front-end.""" + input_dir = 'some/task/output/dir' + output_file = '/some/different/path/to/profdata/merged.profdata' + args = [ + 'script_name', + '--input-dir', + input_dir, + '--output-file', + output_file, + '--llvm-profdata', + 'llvm-profdata', + ] + with mock.patch.object(merger, 'merge_profiles') as mock_merge: + mock_merge.return_value = None + with mock.patch.object(sys, 'argv', args): + merge_steps.main() + self.assertEqual( + mock_merge.call_args, + mock.call(input_dir, output_file, '.profdata', 'llvm-profdata')) + + @mock.patch.object(merger, '_validate_and_convert_profraws') + def test_merge_profraw(self, mock_validate_and_convert_profraws): + mock_input_dir_walk = [ + ('/b/some/path', ['0', '1', '2', '3'], ['summary.json']), + ('/b/some/path/0', [], + ['output.json', 'default-1.profraw', 'default-2.profraw']), + ('/b/some/path/1', [], + ['output.json', 'default-1.profraw', 'default-2.profraw']), + ] + + mock_validate_and_convert_profraws.return_value = [ + '/b/some/path/0/default-1.profdata', + '/b/some/path/1/default-2.profdata', + ], [ + '/b/some/path/0/default-2.profraw', + '/b/some/path/1/default-1.profraw', + ] + + with mock.patch.object(os, 'walk') as mock_walk: + with mock.patch.object(os, 'remove'): + mock_walk.return_value = mock_input_dir_walk + with mock.patch.object(subprocess, 'check_output') as mock_exec_cmd: + merger.merge_profiles('/b/some/path', 'output/dir/default.profdata', + '.profraw', 'llvm-profdata') + self.assertEqual( + mock.call( + [ + 'llvm-profdata', + 'merge', + '-o', + 'output/dir/default.profdata', + '-sparse=true', + '/b/some/path/0/default-1.profdata', + '/b/some/path/1/default-2.profdata', + ], + stderr=-2, + ), mock_exec_cmd.call_args) + + self.assertTrue(mock_validate_and_convert_profraws.called) + + @mock.patch.object(merger, '_validate_and_convert_profraws') + def test_merge_profdata(self, mock_validate_and_convert_profraws): + mock_input_dir_walk = [ + ('/b/some/path', ['base_unittests', 'url_unittests'], ['summary.json']), + ('/b/some/path/base_unittests', [], ['output.json', + 'default.profdata']), + ('/b/some/path/url_unittests', [], ['output.json', 'default.profdata']), + ] + with mock.patch.object(os, 'walk') as mock_walk: + with mock.patch.object(os, 'remove'): + mock_walk.return_value = mock_input_dir_walk + with mock.patch.object(subprocess, 'check_output') as mock_exec_cmd: + merger.merge_profiles('/b/some/path', 'output/dir/default.profdata', + '.profdata', 'llvm-profdata') + self.assertEqual( + mock.call( + [ + 'llvm-profdata', + 'merge', + '-o', + 'output/dir/default.profdata', + '-sparse=true', + '/b/some/path/base_unittests/default.profdata', + '/b/some/path/url_unittests/default.profdata', + ], + stderr=-2, + ), mock_exec_cmd.call_args) + + # The mock method should only apply when merging .profraw files. + self.assertFalse(mock_validate_and_convert_profraws.called) + + def test_retry_profdata_merge_failures(self): + mock_input_dir_walk = [ + ('/b/some/path', ['0', '1'], ['summary.json']), + ('/b/some/path/0', [], + ['output.json', 'default-1.profdata', 'default-2.profdata']), + ('/b/some/path/1', [], + ['output.json', 'default-1.profdata', 'default-2.profdata']), + ] + with mock.patch.object(os, 'walk') as mock_walk: + with mock.patch.object(os, 'remove'): + mock_walk.return_value = mock_input_dir_walk + with mock.patch.object(subprocess, 'check_output') as mock_exec_cmd: + invalid_profiles_msg = ( + 'error: /b/some/path/0/default-1.profdata: Malformed ' + 'instrumentation profile data.') + + # Failed on the first merge, but succeed on the second attempt. + mock_exec_cmd.side_effect = [ + subprocess.CalledProcessError( + returncode=1, cmd='dummy cmd', output=invalid_profiles_msg), + None + ] + + merger.merge_profiles('/b/some/path', 'output/dir/default.profdata', + '.profdata', 'llvm-profdata') + + self.assertEqual(2, mock_exec_cmd.call_count) + + # Note that in the second call, /b/some/path/0/default-1.profdata is + # excluded! + self.assertEqual( + mock.call( + [ + 'llvm-profdata', + 'merge', + '-o', + 'output/dir/default.profdata', + '-sparse=true', + '/b/some/path/0/default-2.profdata', + '/b/some/path/1/default-1.profdata', + '/b/some/path/1/default-2.profdata', + ], + stderr=-2, + ), mock_exec_cmd.call_args) + + +if __name__ == '__main__': + unittest.main() diff --git a/chromium/testing/merge_scripts/code_coverage/merge_steps.py b/chromium/testing/merge_scripts/code_coverage/merge_steps.py new file mode 100755 index 00000000000..c0d5d4e00b0 --- /dev/null +++ b/chromium/testing/merge_scripts/code_coverage/merge_steps.py @@ -0,0 +1,33 @@ +#!/usr/bin/python +# Copyright 2019 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. +"""This script merges code coverage profiles from multiple steps.""" + +import argparse +import os +import sys + +import merge_lib as merger + + +def _merge_steps_argument_parser(*args, **kwargs): + parser = argparse.ArgumentParser(*args, **kwargs) + parser.add_argument('--input-dir', required=True, help=argparse.SUPPRESS) + parser.add_argument( + '--output-file', required=True, help='where to store the merged data') + parser.add_argument( + '--llvm-profdata', required=True, help='path to llvm-profdata executable') + return parser + + +def main(): + desc = "Merge profdata files in <--input-dir> into a single profdata." + parser = _merge_steps_argument_parser(description=desc) + params = parser.parse_args() + merger.merge_profiles(params.input_dir, params.output_file, '.profdata', + params.llvm_profdata) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/chromium/testing/merge_scripts/results_merger.py b/chromium/testing/merge_scripts/results_merger.py index d7dcaaccb7e..92f7d1269b7 100755 --- a/chromium/testing/merge_scripts/results_merger.py +++ b/chromium/testing/merge_scripts/results_merger.py @@ -25,6 +25,7 @@ OPTIONAL_MATCHING = ( 'path_delimiter', 'pixel_tests_enabled', 'random_order_seed', + 'metadata' ) OPTIONAL_IGNORED = ( diff --git a/chromium/testing/merge_scripts/results_merger_unittest.py b/chromium/testing/merge_scripts/results_merger_test.py index 360384d145e..fbf79421143 100755 --- a/chromium/testing/merge_scripts/results_merger_unittest.py +++ b/chromium/testing/merge_scripts/results_merger_test.py @@ -172,6 +172,20 @@ class MergingTest(unittest.TestCase): # pragma: no cover results_merger.merge_tries( {'a': {'b': 'A'}}, {'a': {'b': 'C'}}) + def test_merge_metadata(self): + metadata = {'metadata': {'tags': ['foo', 'bar']}} + results_merger.merge_test_results( + [extend(GOOD_JSON_TEST_RESULT_0, metadata), + extend(GOOD_JSON_TEST_RESULT_1, metadata)]) + + def test_merge_metadata_raises_exception(self): + metadata1 = {'metadata': {'tags': ['foo', 'bar']}} + metadata2 = {'metadata': {'tags': ['foo', 'bat']}} + with self.assertRaises(results_merger.MergeException): + results_merger.merge_test_results( + [extend(GOOD_JSON_TEST_RESULT_0, metadata1), + extend(GOOD_JSON_TEST_RESULT_1, metadata2)]) + def test_merge_json_test_results_nop(self): good_json_results = ( GOOD_JSON_TEST_RESULT_0, diff --git a/chromium/testing/merge_scripts/standard_isolated_script_merge_test.py b/chromium/testing/merge_scripts/standard_isolated_script_merge_test.py index 89ec9001eb7..7cd14360039 100755 --- a/chromium/testing/merge_scripts/standard_isolated_script_merge_test.py +++ b/chromium/testing/merge_scripts/standard_isolated_script_merge_test.py @@ -17,12 +17,6 @@ import common_merge_script_tests THIS_DIR = os.path.dirname(__file__) -sys.path.insert( - 0, os.path.abspath(os.path.join(THIS_DIR, '..', '..', '..', 'unittests'))) -import test_env - -sys.path.insert( - 0, os.path.abspath(os.path.join(THIS_DIR, '..', 'resources'))) import standard_isolated_script_merge diff --git a/chromium/testing/scripts/cronet_sizes.py b/chromium/testing/scripts/cronet_sizes.py new file mode 100755 index 00000000000..47180c25776 --- /dev/null +++ b/chromium/testing/scripts/cronet_sizes.py @@ -0,0 +1,22 @@ +#!/usr/bin/env vpython +# Copyright 2019 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 json +import sys + +import common +import sizes_common + + +def main_compile_targets(args): + json.dump(['cronet'], args.output) + + +if __name__ == '__main__': + funcs = { + 'run': sizes_common.main_run, + 'compile_targets': main_compile_targets + } + sys.exit(common.run_script(sys.argv[1:], funcs)) diff --git a/chromium/testing/scripts/get_compile_targets.py b/chromium/testing/scripts/get_compile_targets.py index 16cff951648..aed1c569e8a 100755 --- a/chromium/testing/scripts/get_compile_targets.py +++ b/chromium/testing/scripts/get_compile_targets.py @@ -27,7 +27,10 @@ def main(argv): for filename in os.listdir(common.SCRIPT_DIR): if not filename.endswith('.py'): continue - if filename in ('common.py', 'get_compile_targets.py'): + if filename in ('common.py', + 'get_compile_targets.py', + 'gpu_integration_test_adapter.py', + 'sizes_common.py'): continue with common.temporary_file() as tempfile_path: diff --git a/chromium/testing/scripts/gpu_integration_test_adapter.py b/chromium/testing/scripts/gpu_integration_test_adapter.py new file mode 100644 index 00000000000..e62c501df23 --- /dev/null +++ b/chromium/testing/scripts/gpu_integration_test_adapter.py @@ -0,0 +1,34 @@ +# Copyright 2019 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 common + +class GpuIntegrationTestAdapater(common.BaseIsolatedScriptArgsAdapter): + + def generate_test_output_args(self, output): + return ['--write-full-results-to', output] + + def generate_test_also_run_disabled_tests_args(self): + return ['--also-run-disabled-tests'] + + def generate_test_filter_args(self, test_filter_str): + filter_list = common.extract_filter_list(test_filter_str) + # isolated_script_test_filter comes in like: + # gpu_tests.webgl_conformance_integration_test.WebGLConformanceIntegrationTest.WebglExtension_WEBGL_depth_texture # pylint: disable=line-too-long + # but we need to pass it to --test-filter like this: + # WebglExtension_WEBGL_depth_texture + filter_list = [f.split('.')[-1] for f in filter_list] + # Need to convert this to a valid regex. + filter_regex = '(' + '|'.join(filter_list) + ')' + return ['--test-filter=%s' % filter_regex] + + def generate_sharding_args(self, total_shards, shard_index): + return ['--total-shards=%d' % total_shards, + '--shard-index=%d' % shard_index] + + def generate_test_launcher_retry_limit_args(self, retry_limit): + return ['--retry-limit=%d' % retry_limit] + + def generate_test_repeat_args(self, repeat_count): + return ['--repeat=%d' % repeat_count] diff --git a/chromium/testing/scripts/run_gpu_integration_test_as_googletest.py b/chromium/testing/scripts/run_gpu_integration_test_as_googletest.py index 6a65ee471d7..fd48ec4d880 100755 --- a/chromium/testing/scripts/run_gpu_integration_test_as_googletest.py +++ b/chromium/testing/scripts/run_gpu_integration_test_as_googletest.py @@ -28,45 +28,14 @@ invoke an arbitrary executable. """ import json -import os -import shutil import sys -import tempfile -import traceback import common +import gpu_integration_test_adapter -class GpuIntegrationTestAdapater(common.BaseIsolatedScriptArgsAdapter): - - def generate_test_output_args(self, output): - return ['--write-full-results-to', output] - - def generate_test_also_run_disabled_tests_args(self): - return ['--also-run-disabled-tests'] - - def generate_test_filter_args(self, test_filter_str): - filter_list = common.extract_filter_list(test_filter_str) - # isolated_script_test_filter comes in like: - # gpu_tests.webgl_conformance_integration_test.WebGLConformanceIntegrationTest.WebglExtension_WEBGL_depth_texture # pylint: disable=line-too-long - # but we need to pass it to --test-filter like this: - # WebglExtension_WEBGL_depth_texture - filter_list = [f.split('.')[-1] for f in filter_list] - # Need to convert this to a valid regex. - filter_regex = '(' + '|'.join(filter_list) + ')' - return ['--test-filter=%s' % filter_regex] - - def generate_sharding_args(self, total_shards, shard_index): - return ['--total-shards=%d' % total_shards, - '--shard-index=%d' % shard_index] - - def generate_test_launcher_retry_limit_args(self, retry_limit): - return ['--retry-limit=%d' % retry_limit] - - def generate_test_repeat_args(self, repeat_count): - return ['--repeat=%d' % repeat_count] def main(): - adapter = GpuIntegrationTestAdapater() + adapter = gpu_integration_test_adapter.GpuIntegrationTestAdapater() return adapter.run_test() diff --git a/chromium/testing/scripts/run_isolated_script_test.py b/chromium/testing/scripts/run_isolated_script_test.py index 733de14b22f..f0d3e5e8631 100755 --- a/chromium/testing/scripts/run_isolated_script_test.py +++ b/chromium/testing/scripts/run_isolated_script_test.py @@ -54,7 +54,11 @@ KNOWN_ISOLATED_SCRIPT_TEST_RUNNERS = {'run_web_tests.py'} # Known typ test runners this script wraps. They need a different argument name # when selecting which tests to run. # TODO(dpranke): Detect if the wrapped test suite uses typ better. -KNOWN_TYP_TEST_RUNNERS = {'run_blinkpy_tests.py', 'metrics_python_tests.py'} +KNOWN_TYP_TEST_RUNNERS = { + 'run_blinkpy_tests.py', + 'metrics_python_tests.py', + 'run_mac_signing_tests.py', +} class IsolatedScriptTestAdapter(common.BaseIsolatedScriptArgsAdapter): diff --git a/chromium/testing/scripts/sizes.py b/chromium/testing/scripts/sizes_common.py index 7e81602613c..6b1d22cc026 100755..100644 --- a/chromium/testing/scripts/sizes.py +++ b/chromium/testing/scripts/sizes_common.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # 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. @@ -15,7 +14,6 @@ PERF_DASHBOARD_URL = 'https://chromeperf.appspot.com' def create_argparser(): parser = argparse.ArgumentParser() - parser.add_argument('--platform') parser.add_argument('--perf-id') parser.add_argument('--results-url', default=PERF_DASHBOARD_URL) return parser @@ -23,8 +21,7 @@ def create_argparser(): def main_run(script_args): parser = create_argparser() - parser.add_argument('prefix') - args = parser.parse_args(script_args.args) + args, sizes_args = parser.parse_known_args(script_args.args) runtest_args = [ '--test-type', @@ -43,8 +40,7 @@ def main_run(script_args): os.path.join(common.SRC_DIR, 'infra', 'scripts', 'legacy', 'scripts', 'slave', 'chromium', 'sizes.py') ] - if args.platform: - sizes_cmd.extend(['--platform', args.platform]) + sizes_cmd.extend(sizes_args) rc = common.run_runtest(script_args, runtest_args + sizes_cmd) json.dump({ @@ -53,23 +49,3 @@ def main_run(script_args): }, script_args.output) return rc - - -def main_compile_targets(script_args): - parser = create_argparser() - args = parser.parse_args(script_args.args) - - _COMPILE_TARGETS = { - 'android-cronet': ['cronet'], - 'android-webview': ['libwebviewchromium'], - } - - json.dump(_COMPILE_TARGETS.get(args.platform, ['chrome']), script_args.output) - - -if __name__ == '__main__': - funcs = { - 'run': main_run, - 'compile_targets': main_compile_targets, - } - sys.exit(common.run_script(sys.argv[1:], funcs)) diff --git a/chromium/testing/scripts/test_buildbucket_api_gpu_use_cases.py b/chromium/testing/scripts/test_buildbucket_api_gpu_use_cases.py new file mode 100755 index 00000000000..7d1a1507b9f --- /dev/null +++ b/chromium/testing/scripts/test_buildbucket_api_gpu_use_cases.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python +# Copyright 2019 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 argparse +import json +import os +import sys + +import common + +# Add src/content/test/gpu into sys.path for importing common. +sys.path.append(os.path.join(os.path.dirname(__file__), + '..', '..', 'content', 'test', 'gpu')) + +import gather_swarming_json_results + + +class BuildBucketApiGpuUseCaseTests: + + @classmethod + def GenerateTests(cls): + return ['TestGatherWebGL2TestTimesFromLatestGreenBuild'] + + @staticmethod + def TestGatherWebGL2TestTimesFromLatestGreenBuild(): + # Verify we can get more than 2000 WebGL2 tests running time from the + # latest successful build. + extracted_times, _ = gather_swarming_json_results.GatherResults( + bot='Linux FYI Release (NVIDIA)', + build=None, # Use the latest green build + step='webgl2_conformance_tests') + + if 'times' not in extracted_times: + return '"times" is missing from the extracted dict' + num_of_tests = len(extracted_times['times']) + # From local run, there are 2700+ tests. This is sanity check that we + # get reasonable data. + if num_of_tests < 2000: + return 'expected 2000+ tests, got %d tests' % num_of_tests + return None + + +def main(argv): + parser = argparse.ArgumentParser() + parser.add_argument( + '--isolated-script-test-output', type=str, + required=True) + parser.add_argument( + '--isolated-script-test-chartjson-output', type=str, + required=False) + parser.add_argument( + '--isolated-script-test-perf-output', type=str, + required=False) + parser.add_argument( + '--isolated-script-test-filter', type=str, + required=False) + + args = parser.parse_args(argv) + + # Run actual tests + failures = [] + for test_name in BuildBucketApiGpuUseCaseTests.GenerateTests(): + test = getattr(BuildBucketApiGpuUseCaseTests, test_name) + error_msg = test() + if error_msg is not None: + result = '%s: %s' % (test_name, error_msg) + print 'FAIL: %s' % result + failures.append(result) + + if not failures: + print 'PASS: test_buildbucket_api_gpu_use_cases ran successfully.' + + with open(args.isolated_script_test_output, 'w') as json_file: + json.dump({ + 'valid': True, + 'failures': failures, + }, json_file) + + return 0 + + +# This is not really a "script test" so does not need to manually add +# any additional compile targets. +def main_compile_targets(args): + json.dump([], args.output) + + +if __name__ == '__main__': + # Conform minimally to the protocol defined by ScriptTest. + if 'compile_targets' in sys.argv: + funcs = { + 'run': None, + 'compile_targets': main_compile_targets, + } + sys.exit(common.run_script(sys.argv[1:], funcs)) + sys.exit(main(sys.argv[1:])) diff --git a/chromium/testing/scripts/test_traffic_annotation_auditor.py b/chromium/testing/scripts/test_traffic_annotation_auditor.py index 279d020d628..f5b17c18caf 100755 --- a/chromium/testing/scripts/test_traffic_annotation_auditor.py +++ b/chromium/testing/scripts/test_traffic_annotation_auditor.py @@ -11,21 +11,66 @@ help it run fast and spam free on trybots are disabled.""" import json import os import sys +import tempfile import common +SHEET_CONFIG = { + "spreadsheet_id": "1TmBr9jnf1-hrjntiVBzT9EtkINGrtoBYFMWad2MBeaY", + "annotations_sheet_name": "Annotations", + "changes_sheet_name": "Changes Stats", + "silent_change_columns": [], + "last_update_column_name": "Last Update", +} + +def is_linux(): + return sys.platform.startswith('linux') def main_run(args): + annotations_file = tempfile.NamedTemporaryFile() + annotations_filename = annotations_file.name + annotations_file.close() + command_line = [ sys.executable, os.path.join(common.SRC_DIR, 'tools', 'traffic_annotation', 'scripts', 'traffic_annotation_auditor_tests.py'), '--build-path', os.path.join(args.paths['checkout'], 'out', args.build_config_fs), + '--annotations-file', + annotations_filename, ] rc = common.run_command(command_line) + # Update the Google Sheets on success, but only on the Linux trybot. + if rc == 0 and is_linux(): + config_file = tempfile.NamedTemporaryFile(delete=False) + json.dump(SHEET_CONFIG, config_file, indent=4) + config_filename = config_file.name + config_file.close() + + command_line = [ + os.path.join(common.SRC_DIR, 'tools', 'traffic_annotation', 'scripts', + 'update_annotations_sheet.py'), + '--force', + '--config-file', + config_filename, + '--annotations-file', + annotations_filename, + ] + rc = common.run_command(command_line) + + try: + os.remove(config_filename) + except OSError: + pass + + try: + os.remove(annotations_filename) + except OSError: + pass + json.dump({ 'valid': True, 'failures': ['Please refer to stdout for errors.'] if rc else [], diff --git a/chromium/testing/test.gni b/chromium/testing/test.gni index eac0fdd8107..929418c4e84 100644 --- a/chromium/testing/test.gni +++ b/chromium/testing/test.gni @@ -369,6 +369,12 @@ template("test") { deps = [] } + if (is_win) { + # Initializing CFG data during process creation is a significant + # bottleneck for large test binaries, and CFG is not needed for tests, + # so disable it. See https://crbug.com/950923 for details. + configs -= [ "//build/config/win:cfi_linker" ] + } testonly = true deps += [ # Give tests the default manifest on Windows (a no-op elsewhere). diff --git a/chromium/testing/test_env.py b/chromium/testing/test_env.py index 95fefcce56d..053fbc02a26 100755 --- a/chromium/testing/test_env.py +++ b/chromium/testing/test_env.py @@ -86,6 +86,9 @@ def get_sanitizer_env(cmd, asan, lsan, msan, tsan, cfi_diag): else: symbolization_options = [] + # Leverage sanitizer to print stack trace on abort (e.g. assertion failure). + symbolization_options.append('handle_abort=1') + if asan: asan_options = symbolization_options[:] if lsan: @@ -311,10 +314,17 @@ def run_executable(cmd, env, stdoutfile=None): cmd[0] = cmd[0].replace('/', os.path.sep) cmd = fix_python_path(cmd) + # We also want to print the GTEST env vars that were set by the caller, + # because you need them to reproduce the task properly. + env_to_print = extra_env.copy() + for env_var_name in ('GTEST_SHARD_INDEX', 'GTEST_TOTAL_SHARDS'): + if env_var_name in env: + env_to_print[env_var_name] = env[env_var_name] + print('Additional test environment:\n%s\n' 'Command: %s\n' % ( '\n'.join(' %s=%s' % - (k, v) for k, v in sorted(extra_env.iteritems())), + (k, v) for k, v in sorted(env_to_print.iteritems())), ' '.join(cmd))) sys.stdout.flush() env.update(extra_env or {}) diff --git a/chromium/testing/variations/fieldtrial_testing_config.json b/chromium/testing/variations/fieldtrial_testing_config.json index f84acc84e17..5124bf1901b 100644 --- a/chromium/testing/variations/fieldtrial_testing_config.json +++ b/chromium/testing/variations/fieldtrial_testing_config.json @@ -35,6 +35,24 @@ ] } ], + "AccessibilityImageDescriptions": [ + { + "platforms": [ + "windows", + "mac", + "chromeos", + "linux" + ], + "experiments": [ + { + "name": "AccessibilityImageDescriptions", + "enable_features": [ + "ExperimentalAccessibilityLabels" + ] + } + ] + } + ], "AccountConsistencyVariations": [ { "platforms": [ @@ -471,6 +489,21 @@ ] } ], + "AndroidSurfaceControl": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "EnableAndroidSurfaceControl", + "enable_features": [ + "AndroidSurfaceControl" + ] + } + ] + } + ], "AppLauncherRefresh": [ { "platforms": [ @@ -525,10 +558,12 @@ ], "experiments": [ { - "name": "AudioProcess_Sandboxed_APM_v9", + "name": "AudioProcess_APM", + "params": { + "teardown_timeout_s": "900" + }, "enable_features": [ "AudioServiceAudioStreams", - "AudioServiceLaunchOnStartup", "AudioServiceOutOfProcess", "AudioServiceSandbox", "WebRtcApmInAudioService" @@ -581,28 +616,7 @@ ], "experiments": [ { - "name": "Enabled_LeadingIcon", - "params": { - "variant": "leading-icon" - }, - "enable_features": [ - "AutofillDropdownLayout" - ] - }, - { - "name": "Enabled_TrailingIcon", - "params": { - "variant": "trailing-icon" - }, - "enable_features": [ - "AutofillDropdownLayout" - ] - }, - { - "name": "Enabled_TwoLinesLeadingIcon", - "params": { - "variant": "two-lines-leading-icon" - }, + "name": "Enabled", "enable_features": [ "AutofillDropdownLayout" ] @@ -650,6 +664,24 @@ ] } ], + "AutofillEnableLocalCardMigrationForNonSyncUser": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableLocalCardMigrationForNonSyncUser" + ] + } + ] + } + ], "AutofillFieldMetadata": [ { "platforms": [ @@ -667,6 +699,46 @@ ] } ], + "AutofillImportDynamicForms": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillImportDynamicForms" + ] + } + ] + } + ], + "AutofillImportNonFocusableCreditCardForms": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillImportNonFocusableCreditCardForms" + ] + } + ] + } + ], "AutofillLocalCardMigration": [ { "platforms": [ @@ -703,6 +775,24 @@ ] } ], + "AutofillLocalCardMigrationUsesStrikeSystemV2": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillLocalCardMigrationUsesStrikeSystemV2" + ] + } + ] + } + ], "AutofillMetadataUploads": [ { "platforms": [ @@ -723,6 +813,27 @@ ] } ], + "AutofillOffNoServerData": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillOffNoServerData" + ] + } + ] + } + ], "AutofillPreviewStyleExperiment": [ { "platforms": [ @@ -756,6 +867,45 @@ ] } ], + "AutofillProfileValidation": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledClient_20190211", + "enable_features": [ + "AutofillProfileClientValidation" + ], + "disable_features": [ + "AutofillProfileServerValidation" + ] + }, + { + "name": "EnabledClientServer_20190211", + "enable_features": [ + "AutofillProfileClientValidation", + "AutofillProfileServerValidation" + ] + }, + { + "name": "EnabledServer_20190211", + "enable_features": [ + "AutofillProfileServerValidation" + ], + "disable_features": [ + "AutofillProfileClientValidation " + ] + } + ] + } + ], "AutofillRefreshStyleAndroid": [ { "platforms": [ @@ -898,6 +1048,7 @@ "AutofillUpstreamEditableExpirationDate": [ { "platforms": [ + "android", "chromeos", "linux", "mac", @@ -913,6 +1064,24 @@ ] } ], + "AutofillUseImprovedLabelDisambiguation": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillUseImprovedLabelDisambiguation" + ] + } + ] + } + ], "AutomaticTabDiscarding": [ { "platforms": [ @@ -1177,6 +1346,22 @@ ] } ], + "CertDualVerificationTrial": [ + { + "platforms": [ + "linux", + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CertDualVerificationTrial" + ] + } + ] + } + ], "CertificateTransparencyLogAuditing": [ { "platforms": [ @@ -1281,28 +1466,6 @@ ] } ], - "CompressParkableStringsInForeground": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CompressParkableStringsInForeground" - ], - "disable_features": [ - "CompressParkableStringsInBackground" - ] - } - ] - } - ], "ContentCapture": [ { "platforms": [ @@ -1345,6 +1508,21 @@ ] } ], + "ContextualSearchDefinitions": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "ContextualSearchDefinitions", + "enable_features": [ + "ContextualSearchDefinitions" + ] + } + ] + } + ], "CopylessPaste": [ { "platforms": [ @@ -1456,40 +1634,6 @@ ] } ], - "DataReductionProxyServerExperiments": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "OnDeviceSafeBrowsingFieldTrialEnabled", - "params": { - "exp": "disable_server_safebrowsing" - } - } - ] - } - ], - "DataSaverSiteBreakdownUsingPageLoadMetrics": [ - { - "platforms": [ - "android", - "windows", - "mac", - "chromeos", - "linux" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DataSaverSiteBreakdownUsingPageLoadMetrics" - ] - } - ] - } - ], "DecoupleTranslateLanguage": [ { "platforms": [ @@ -1521,24 +1665,6 @@ ] } ], - "DefaultEnableGpuRasterization": [ - { - "platforms": [ - "mac", - "windows", - "chromeos", - "android" - ], - "experiments": [ - { - "name": "DefaultEnableGpuRasterization", - "enable_features": [ - "DefaultEnableGpuRasterization" - ] - } - ] - } - ], "DefaultEnableOopRasterization": [ { "platforms": [ @@ -1930,18 +2056,6 @@ ] } ], - "ExtensionDeveloperModeWarning": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled" - } - ] - } - ], "ExtensionInstallVerification": [ { "platforms": [ @@ -1958,9 +2072,13 @@ "FCMInvalidationsExperiment": [ { "platforms": [ + "android", "windows", "mac", - "chromeos" + "chromeos", + "ios", + "linux", + "android_webview" ], "experiments": [ { @@ -2108,7 +2226,10 @@ ], "experiments": [ { - "name": "branded" + "name": "Enabled", + "enable_features": [ + "GoogleBrandedContextMenu" + ] } ] } @@ -2125,6 +2246,22 @@ ] } ], + "GpuRasterizationViewportRestriction": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "EnableGpuRasterizationViewportRestriction" + ] + } + ] + } + ], "GpuScheduler": [ { "platforms": [ @@ -2158,21 +2295,12 @@ "//4": "captured from the experiment. The perf results", "//5": "from the default value are sufficient.", "name": "Enabled", - "enable_features": [ - "GwpAsanMalloc" - ] - } - ] - } - ], - "GwpAsanMallocWindowsLaunch": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", + "params": { + "MaxAllocations": "30", + "MaxMetadata": "100", + "ProcessSamplingProbability": "0.2", + "TotalPages": "100" + }, "enable_features": [ "GwpAsanMalloc" ] @@ -2234,24 +2362,6 @@ ] } ], - "Html5ByDefault": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PreferHtmlOverPlugins" - ] - } - ] - } - ], "IDBTombstoneSweeper": [ { "platforms": [ @@ -2454,6 +2564,12 @@ ], "experiments": [ { + "name": "Control", + "disable_features": [ + "InterestFeedContentSuggestions" + ] + }, + { "name": "Enabled", "enable_features": [ "InterestFeedContentSuggestions" @@ -2499,7 +2615,7 @@ ] } ], - "LegacySymantecPKI": [ + "LazyLoad": [ { "platforms": [ "android", @@ -2510,15 +2626,20 @@ ], "experiments": [ { - "name": "Enabled_20181012", + "name": "Enabled", + "params": { + "restrict-lazy-load-frames-to-data-saver-only": "true", + "restrict-lazy-load-images-to-data-saver-only": "true" + }, "enable_features": [ - "LegacySymantecPKI" + "LazyFrameLoading", + "LazyImageLoading" ] } ] } ], - "LevelDBPerformRewrite": [ + "LegacySymantecPKI": [ { "platforms": [ "android", @@ -2529,27 +2650,28 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20181012", "enable_features": [ - "LevelDBPerformRewrite" + "LegacySymantecPKI" ] } ] } ], - "LocalScreenCasting": [ + "LevelDBPerformRewrite": [ { "platforms": [ + "android", + "chromeos", "linux", "mac", - "windows", - "chromeos" + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "LocalScreenCasting" + "LevelDBPerformRewrite" ] } ] @@ -2772,20 +2894,16 @@ ] } ], - "MseBufferByPts": [ + "MojoChannelMac": [ { "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" + "mac" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "MseBufferByPts" + "MojoChannelMac" ] } ] @@ -2862,34 +2980,31 @@ ] } ], - "NativeCrxBindings": [ + "NativeNotifications": [ { "platforms": [ - "chromeos", - "linux", - "mac", "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "NativeCrxBindings" + "NativeNotifications" ] } ] } ], - "NativeNotifications": [ + "NativeWindowOcclusionTrackerWin": [ { "platforms": [ "windows" ], "experiments": [ { - "name": "Enabled", + "name": "NativeWindowOcclusionTrackerWin", "enable_features": [ - "NativeNotifications" + "CalculateNativeWinOcclusion" ] } ] @@ -2902,12 +3017,11 @@ ], "experiments": [ { - "name": "AppsEmailThenNTPLaunched-002", + "name": "AppsBackground-007", "params": { - "new-user-modules": "nux-google-apps,nux-email,nux-set-as-default,signin-view", - "onboarding-group": "AppsEmailThenNTPLaunchedSynthetic-002", - "returning-user-modules": "nux-set-as-default", - "show-email-interstitial": "false" + "new-user-modules": "nux-google-apps,nux-ntp-background,nux-set-as-default,signin-view", + "onboarding-group": "AppsBackgroundSynthetic-007", + "returning-user-modules": "nux-set-as-default" }, "enable_features": [ "NuxOnboarding" @@ -2931,6 +3045,7 @@ "is_same_host_scale": "0", "is_url_incremented_scale": "100", "ratio_area_scale": "100", + "retry_preconnect_wait_time_ms": "50", "same_origin_preconnecting_allowed": "true", "source_engagement_score_scale": "100", "target_engagement_score_scale": "100" @@ -2942,7 +3057,7 @@ ] } ], - "NetworkQualityEstimator": [ + "NetUnusedIdleSocketTimeout": [ { "platforms": [ "android", @@ -2953,10 +3068,13 @@ ], "experiments": [ { - "name": "Enabled9", + "name": "Enabled_60_seconds_20190408", "params": { - "cap_ect_based_on_signal_strength": "true" - } + "unused_idle_socket_timeout_seconds": "60" + }, + "enable_features": [ + "NetUnusedIdleSocketTimeout" + ] } ] } @@ -3247,6 +3365,7 @@ "OmniboxRichEntitySuggestions", "OmniboxTailSuggestions", "OmniboxUIExperimentMaxAutocompleteMatches", + "QueryInOmnibox", "ZeroSuggestRedirectToChrome", "ZeroSuggestSwapTitleAndUrl" ] @@ -3342,6 +3461,27 @@ ] } ], + "OutOfBlinkCors": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OutOfBlinkCors" + ] + } + ] + } + ], "OverflowIconsForMediaControls": [ { "platforms": [ @@ -3470,7 +3610,7 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20190328", "enable_features": [ "FillOnAccountSelectHttp" ] @@ -3478,30 +3618,6 @@ ] } ], - "PasswordGenerationRequirements": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "prefix_length": "0", - "timeout": "5000", - "version": "1" - }, - "enable_features": [ - "PasswordGenerationRequirementsDomainOverrides" - ] - } - ] - } - ], "PasswordProtectionForEnterprise": [ { "platforms": [ @@ -3776,6 +3892,25 @@ ] } ], + "PrerenderFallbackToPreconnect": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_20190410", + "enable_features": [ + "PrerenderFallbackToPreconnect" + ] + } + ] + } + ], "PreviewsClientLoFi": [ { "platforms": [ @@ -3838,6 +3973,21 @@ ] } ], + "PreviewsReloadsAreSoftOptOuts": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PreviewsReloadsAreSoftOptOuts" + ] + } + ] + } + ], "PreviewsSlowPageTriggering": [ { "platforms": [ @@ -3845,9 +3995,9 @@ ], "experiments": [ { - "name": "SlowPageTriggeringFor3G_20181204", + "name": "SlowPageTriggeringFor4G_20190312", "params": { - "session_max_ect_trigger": "3G" + "session_max_ect_trigger": "4G" }, "enable_features": [ "PreviewsSlowPageTriggering" @@ -3989,21 +4139,6 @@ ] } ], - "RemoveGpuRasterizationViewportRestriction": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "RemoveRestriction", - "disable_features": [ - "EnableGpuRasterizationViewportRestriction" - ] - } - ] - } - ], "RemoveNTPFakebox": [ { "platforms": [ @@ -4427,7 +4562,10 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledCopyIcon", + "params": { + "variation": "copy_icon" + }, "enable_features": [ "SearchReadyOmnibox" ] @@ -4447,7 +4585,7 @@ ], "experiments": [ { - "name": "Enabled_20190212", + "name": "Enabled_20190318", "enable_features": [ "ServiceWorkerAggressiveCodeCache" ] @@ -4489,11 +4627,9 @@ ] } ], - "ServiceWorkerServicification": [ + "ServiceWorkerIsolateInForeground": [ { "platforms": [ - "android", - "android_webview", "chromeos", "linux", "mac", @@ -4501,9 +4637,25 @@ ], "experiments": [ { - "name": "Enabled2", + "name": "Enabled", "enable_features": [ - "ServiceWorkerServicification" + "ServiceWorkerIsolateInForeground" + ] + } + ] + } + ], + "ServiceWorkerIsolateInForegroundAndroid": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ServiceWorkerIsolateInForeground" ] } ] @@ -4765,6 +4917,48 @@ ] } ], + "SyncButterWallet": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_DownstreamBehindButton", + "enable_features": [ + "AutofillEnableAccountWalletStorage", + "AutofillSaveCardImprovedUserConsent", + "SyncSupportSecondaryAccount" + ], + "disable_features": [ + "AlwaysShowServerCardsInSyncTransport" + ] + } + ] + } + ], + "SyncE2ELatency": [ + { + "platforms": [ + "android", + "windows", + "mac", + "chromeos", + "ios", + "linux" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SyncE2ELatencyMeasurement" + ] + } + ] + } + ], "SyncPseudoUss'": [ { "platforms": [ @@ -4815,6 +5009,26 @@ ] } ], + "SyncUSSAutofillProfile": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SyncUSSAutofillProfile" + ] + } + ] + } + ], "SyncUssBookmarks'": [ { "platforms": [ @@ -4835,6 +5049,25 @@ ] } ], + "SyncUssPasswords'": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SyncUSSPasswords" + ] + } + ] + } + ], "TabRanker": [ { "platforms": [ @@ -5076,39 +5309,37 @@ ] } ], - "UnifiedConsent": [ + "UnifiedAutoplay": [ { "platforms": [ - "android", "linux", "mac", + "chromeos", "windows" ], "experiments": [ { - "name": "Enabled3", - "enable_features": [ - "UnifiedConsent" + "name": "PreseedDisabled", + "disable_features": [ + "PreloadMediaEngagementData" ] } ] } ], - "UpdateClientUseJSON": [ + "UnifiedConsent": [ { "platforms": [ "android", - "chromeos", "linux", "mac", - "windows", - "ios" + "windows" ], "experiments": [ { - "name": "UpdateClientUseJSON", + "name": "Enabled3", "enable_features": [ - "UpdateClientUseJSON" + "UnifiedConsent" ] } ] @@ -5129,7 +5360,7 @@ ] } ], - "UseGoogleLocalNtp": [ + "UseAlternateFakeboxOnNtp": [ { "platforms": [ "chromeos", @@ -5139,12 +5370,10 @@ ], "experiments": [ { - "name": "UseGoogleLocalNtp", + "name": "UseAlternateFakeboxOnNtp", "enable_features": [ - "DoodlesOnLocalNtp", - "PromosOnLocalNtp", - "SearchSuggestionsOnLocalNtp", - "UseGoogleLocalNtp" + "FakeboxSearchIconOnNtp", + "UseAlternateFakeboxOnNtp" ] } ] @@ -5183,6 +5412,24 @@ ] } ], + "UserActivityPredictionMlService": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "UserActivityPredictionMlService", + "params": { + "dim_threshold": "-1.0" + }, + "enable_features": [ + "UserActivityPredictionMlService" + ] + } + ] + } + ], "V8AsmJSToWasm": [ { "platforms": [ @@ -5532,6 +5779,21 @@ ] } ], + "WebContentsOcclusionWin": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "WebContentsOcclusionWin", + "enable_features": [ + "WebContentsOcclusion" + ] + } + ] + } + ], "WebPaymentsPerMethodCanMakePaymentQuota": [ { "platforms": [ @@ -5552,6 +5814,24 @@ ] } ], + "WebRTC-AdaptiveLossThresholds": [ + { + "platforms": [ + "windows", + "mac", + "chromeos", + "linux", + "ios", + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled,balance_incr:5kbps,balance_decr:24kbps,exponent:0.7,resets:true" + } + ] + } + ], "WebRTC-Aec3AgcGainChangeResponseKillSwitch": [ { "platforms": [ @@ -5570,6 +5850,37 @@ ] } ], + "WebRTC-Aec3FilterAnalyzerIncrementalAnalysisKillSwitch": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "SwitchEnabled" + } + ] + } + ], + "WebRTC-Audio-NetEqDelayHistogram": [ + { + "platforms": [ + "windows", + "mac", + "chromeos", + "linux" + ], + "experiments": [ + { + "name": "Enabled-95-0.9993" + } + ] + } + ], "WebRTC-Audio-NetEqForceTargetDelayPercentile": [ { "platforms": [ @@ -5617,6 +5928,24 @@ ] } ], + "WebRTC-Bwe-LossBasedControl": [ + { + "platforms": [ + "windows", + "mac", + "chromeos", + "linux", + "ios", + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled,balance_incr:5kbps,balance_decr:24kbps,exponent:0.7,resets:true" + } + ] + } + ], "WebRTC-EnableWebRtcEcdsa": [ { "platforms": [ @@ -5654,6 +5983,24 @@ ] } ], + "WebRTC-ICE-mDNS": [ + { + "platforms": [ + "chromeos", + "windows", + "mac", + "linux" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebRtcHideLocalIpsWithMdns" + ] + } + ] + } + ], "WebRTC-KeepAbsSendTimeExtension": [ { "platforms": [ @@ -5751,6 +6098,23 @@ ] } ], + "WebRTC-VideoRateControl": [ + { + "platforms": [ + "windows", + "mac", + "chromeos", + "linux", + "ios", + "android" + ], + "experiments": [ + { + "name": "pacing_factor:1.0,trust_vp8:true,trust_vp9:true,video_hysteresis:1.2,bitrate_adjuster:true,vp8_s0_boost:false" + } + ] + } + ], "WebRtcHybridAgc": [ { "platforms": [ |