| # Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
| # |
| # Use of this source code is governed by a BSD-style license |
| # that can be found in the LICENSE file in the root of the source |
| # tree. An additional intellectual property rights grant can be found |
| # in the file PATENTS. All contributing project authors may |
| # be found in the AUTHORS file in the root of the source tree. |
| |
| import("//build/config/features.gni") |
| import("//testing/libfuzzer/fuzzer_test.gni") |
| import("../../webrtc.gni") |
| |
| rtc_library("webrtc_fuzzer_main") { |
| sources = [ "webrtc_fuzzer_main.cc" ] |
| deps = [ |
| "../../rtc_base:rtc_base_approved", |
| "//testing/libfuzzer:libfuzzer_main", |
| ] |
| |
| # When WebRTC fuzzer tests are built on Chromium bots they need to link |
| # with Chromium's implementation of metrics and field trial. |
| if (build_with_chromium) { |
| deps += [ |
| "../../../webrtc_overrides:field_trial", |
| "../../../webrtc_overrides:metrics", |
| ] |
| } |
| } |
| |
| rtc_library("fuzz_data_helper") { |
| testonly = true |
| sources = [ |
| "fuzz_data_helper.cc", |
| "fuzz_data_helper.h", |
| ] |
| deps = [ |
| "../../api:array_view", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| ] |
| visibility = [ ":*" ] # Only targets in this file can depend on this. |
| } |
| |
| set_defaults("webrtc_fuzzer_test") { |
| absl_deps = [] |
| } |
| |
| template("webrtc_fuzzer_test") { |
| fuzzer_test(target_name) { |
| forward_variables_from(invoker, "*") |
| deps += [ |
| ":fuzz_data_helper", |
| ":webrtc_fuzzer_main", |
| ] |
| |
| # If absl_deps is [], no action is needed. If not [], then it needs to be |
| # converted to //third_party/abseil-cpp:absl when build_with_chromium=true |
| # otherwise it just needs to be added to deps. |
| if (absl_deps != []) { |
| if (!defined(deps)) { |
| deps = [] |
| } |
| if (build_with_chromium) { |
| deps += [ "//third_party/abseil-cpp:absl" ] |
| } else { |
| deps += absl_deps |
| } |
| } |
| |
| if (!build_with_chromium && is_clang) { |
| suppressed_configs = [ "//build/config/clang:find_bad_constructs" ] |
| } |
| } |
| } |
| |
| webrtc_fuzzer_test("h264_depacketizer_fuzzer") { |
| sources = [ "h264_depacketizer_fuzzer.cc" ] |
| deps = [ "../../modules/rtp_rtcp" ] |
| } |
| |
| webrtc_fuzzer_test("vp8_depacketizer_fuzzer") { |
| sources = [ "vp8_depacketizer_fuzzer.cc" ] |
| deps = [ |
| "../../api:array_view", |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:rtp_video_header", |
| ] |
| } |
| |
| webrtc_fuzzer_test("vp9_depacketizer_fuzzer") { |
| sources = [ "vp9_depacketizer_fuzzer.cc" ] |
| deps = [ |
| "../../api:array_view", |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:rtp_video_header", |
| ] |
| } |
| |
| webrtc_fuzzer_test("vp8_qp_parser_fuzzer") { |
| sources = [ "vp8_qp_parser_fuzzer.cc" ] |
| deps = [ |
| "../../modules/video_coding:video_coding_utility", |
| "../../modules/video_coding/", |
| ] |
| } |
| |
| webrtc_fuzzer_test("vp9_qp_parser_fuzzer") { |
| sources = [ "vp9_qp_parser_fuzzer.cc" ] |
| deps = [ |
| "../../modules/video_coding:video_coding_utility", |
| "../../modules/video_coding/", |
| ] |
| } |
| |
| webrtc_fuzzer_test("h264_bitstream_parser_fuzzer") { |
| sources = [ "h264_bitstream_parser_fuzzer.cc" ] |
| deps = [ |
| "../../common_video", |
| "../../modules/video_coding/", |
| ] |
| } |
| |
| webrtc_fuzzer_test("forward_error_correction_fuzzer") { |
| sources = [ "forward_error_correction_fuzzer.cc" ] |
| deps = [ |
| "../../api:scoped_refptr", |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("flexfec_header_reader_fuzzer") { |
| sources = [ "flexfec_header_reader_fuzzer.cc" ] |
| deps = [ |
| "../../api:scoped_refptr", |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("flexfec_sender_fuzzer") { |
| sources = [ "flexfec_sender_fuzzer.cc" ] |
| deps = [ |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../system_wrappers", |
| ] |
| } |
| |
| webrtc_fuzzer_test("ulpfec_header_reader_fuzzer") { |
| sources = [ "ulpfec_header_reader_fuzzer.cc" ] |
| deps = [ |
| "../../api:scoped_refptr", |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:fec_test_helper", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("ulpfec_generator_fuzzer") { |
| sources = [ "ulpfec_generator_fuzzer.cc" ] |
| deps = [ |
| "../../modules:module_api_public", |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:fec_test_helper", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:checks", |
| "../../rtc_base:rtc_base_approved", |
| "../../system_wrappers", |
| ] |
| } |
| |
| webrtc_fuzzer_test("ulpfec_receiver_fuzzer") { |
| sources = [ "ulpfec_receiver_fuzzer.cc" ] |
| deps = [ |
| ":fuzz_data_helper", |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("flexfec_receiver_fuzzer") { |
| sources = [ "flexfec_receiver_fuzzer.cc" ] |
| deps = [ |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("packet_buffer_fuzzer") { |
| sources = [ "packet_buffer_fuzzer.cc" ] |
| deps = [ |
| "../../modules/video_coding/", |
| "../../system_wrappers", |
| ] |
| } |
| |
| webrtc_fuzzer_test("rtcp_receiver_fuzzer") { |
| sources = [ "rtcp_receiver_fuzzer.cc" ] |
| deps = [ |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:checks", |
| "../../rtc_base:rtc_base_approved", |
| "../../system_wrappers", |
| ] |
| seed_corpus = "corpora/rtcp-corpus" |
| } |
| |
| webrtc_fuzzer_test("rtp_packet_fuzzer") { |
| sources = [ "rtp_packet_fuzzer.cc" ] |
| deps = [ "../../modules/rtp_rtcp:rtp_rtcp_format" ] |
| absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] |
| seed_corpus = "corpora/rtp-corpus" |
| } |
| |
| webrtc_fuzzer_test("rtp_packetizer_av1_fuzzer") { |
| sources = [ "rtp_packetizer_av1_fuzzer.cc" ] |
| deps = [ |
| "../../api/video:video_frame_type", |
| "../../modules/rtp_rtcp:rtp_rtcp", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:checks", |
| ] |
| } |
| |
| webrtc_fuzzer_test("rtp_header_fuzzer") { |
| sources = [ "rtp_header_fuzzer.cc" ] |
| deps = [ |
| "../../modules/rtp_rtcp", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| ] |
| } |
| |
| webrtc_fuzzer_test("congestion_controller_feedback_fuzzer") { |
| sources = [ "congestion_controller_feedback_fuzzer.cc" ] |
| deps = [ |
| "../../modules/congestion_controller", |
| "../../modules/pacing", |
| "../../modules/remote_bitrate_estimator", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| ] |
| } |
| |
| rtc_library("audio_decoder_fuzzer") { |
| testonly = true |
| sources = [ |
| "audio_decoder_fuzzer.cc", |
| "audio_decoder_fuzzer.h", |
| ] |
| deps = [ |
| "../../api/audio_codecs:audio_codecs_api", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:checks", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] |
| } |
| |
| webrtc_fuzzer_test("audio_decoder_ilbc_fuzzer") { |
| sources = [ "audio_decoder_ilbc_fuzzer.cc" ] |
| deps = [ |
| ":audio_decoder_fuzzer", |
| "../../modules/audio_coding:ilbc", |
| ] |
| } |
| |
| webrtc_fuzzer_test("audio_decoder_isac_fuzzer") { |
| sources = [ "audio_decoder_isac_fuzzer.cc" ] |
| deps = [ |
| ":audio_decoder_fuzzer", |
| "../../modules/audio_coding:isac", |
| ] |
| } |
| |
| webrtc_fuzzer_test("audio_decoder_isacfix_fuzzer") { |
| sources = [ "audio_decoder_isacfix_fuzzer.cc" ] |
| deps = [ |
| ":audio_decoder_fuzzer", |
| "../../modules/audio_coding:isac_fix", |
| ] |
| } |
| |
| webrtc_fuzzer_test("audio_decoder_opus_fuzzer") { |
| sources = [ "audio_decoder_opus_fuzzer.cc" ] |
| deps = [ |
| ":audio_decoder_fuzzer", |
| "../../modules/audio_coding:webrtc_opus", |
| ] |
| } |
| |
| webrtc_fuzzer_test("audio_decoder_opus_redundant_fuzzer") { |
| sources = [ "audio_decoder_opus_redundant_fuzzer.cc" ] |
| deps = [ |
| ":audio_decoder_fuzzer", |
| "../../modules/audio_coding:webrtc_opus", |
| ] |
| } |
| |
| webrtc_fuzzer_test("audio_decoder_multiopus_fuzzer") { |
| sources = [ "audio_decoder_multistream_opus_fuzzer.cc" ] |
| deps = [ |
| ":audio_decoder_fuzzer", |
| "../../api/audio_codecs/opus:audio_decoder_multiopus", |
| "../../api/audio_codecs/opus:audio_decoder_opus_config", |
| ] |
| } |
| |
| rtc_library("audio_encoder_fuzzer") { |
| testonly = true |
| sources = [ |
| "audio_encoder_fuzzer.cc", |
| "audio_encoder_fuzzer.h", |
| ] |
| deps = [ |
| ":fuzz_data_helper", |
| "../../api:array_view", |
| "../../api/audio_codecs:audio_codecs_api", |
| "../../rtc_base:checks", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("audio_encoder_opus_fuzzer") { |
| sources = [ "audio_encoder_opus_fuzzer.cc" ] |
| deps = [ |
| ":audio_encoder_fuzzer", |
| "../../api/audio_codecs/opus:audio_encoder_opus", |
| "../../rtc_base:checks", |
| ] |
| } |
| |
| webrtc_fuzzer_test("audio_encoder_isac_fixed_fuzzer") { |
| sources = [ "audio_encoder_isac_fixed_fuzzer.cc" ] |
| deps = [ |
| ":audio_encoder_fuzzer", |
| "../../api/audio_codecs/isac:audio_encoder_isac_fix", |
| "../../rtc_base:checks", |
| ] |
| } |
| |
| webrtc_fuzzer_test("audio_encoder_isac_float_fuzzer") { |
| sources = [ "audio_encoder_isac_float_fuzzer.cc" ] |
| deps = [ |
| ":audio_encoder_fuzzer", |
| "../../api/audio_codecs/isac:audio_encoder_isac_float", |
| "../../rtc_base:checks", |
| ] |
| } |
| |
| webrtc_fuzzer_test("turn_unwrap_fuzzer") { |
| sources = [ "turn_unwrap_fuzzer.cc" ] |
| deps = [ |
| "../../media", |
| "../../media:rtc_media_base", |
| ] |
| } |
| |
| webrtc_fuzzer_test("neteq_rtp_fuzzer") { |
| sources = [ "neteq_rtp_fuzzer.cc" ] |
| deps = [ |
| "../../api:array_view", |
| "../../api/audio_codecs:builtin_audio_decoder_factory", |
| "../../modules/audio_coding:neteq", |
| "../../modules/audio_coding:neteq_test_tools", |
| "../../modules/audio_coding:neteq_tools_minimal", |
| "../../modules/audio_coding:pcm16b", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("neteq_signal_fuzzer") { |
| sources = [ "neteq_signal_fuzzer.cc" ] |
| deps = [ |
| "../../api:array_view", |
| "../../api/audio_codecs:builtin_audio_decoder_factory", |
| "../../modules/audio_coding:neteq", |
| "../../modules/audio_coding:neteq_test_tools", |
| "../../modules/audio_coding:neteq_tools_minimal", |
| "../../modules/audio_coding:pcm16b", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("residual_echo_detector_fuzzer") { |
| sources = [ "residual_echo_detector_fuzzer.cc" ] |
| deps = [ |
| "../../api/audio:echo_detector_creator", |
| "../../rtc_base:checks", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("sdp_parser_fuzzer") { |
| sources = [ "sdp_parser_fuzzer.cc" ] |
| deps = [ |
| "../../api:libjingle_peerconnection_api", |
| "../../pc:libjingle_peerconnection", |
| ] |
| seed_corpus = "corpora/sdp-corpus" |
| } |
| |
| webrtc_fuzzer_test("stun_parser_fuzzer") { |
| sources = [ "stun_parser_fuzzer.cc" ] |
| deps = [ |
| "../../api/transport:stun_types", |
| "../../p2p:rtc_p2p", |
| ] |
| seed_corpus = "corpora/stun-corpus" |
| dict = "corpora/stun.tokens" |
| } |
| |
| webrtc_fuzzer_test("stun_validator_fuzzer") { |
| sources = [ "stun_validator_fuzzer.cc" ] |
| deps = [ |
| "../../api/transport:stun_types", |
| "../../p2p:rtc_p2p", |
| ] |
| seed_corpus = "corpora/stun-corpus" |
| dict = "corpora/stun.tokens" |
| } |
| |
| webrtc_fuzzer_test("mdns_parser_fuzzer") { |
| sources = [ "mdns_parser_fuzzer.cc" ] |
| deps = [ |
| "../../p2p:rtc_p2p", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| seed_corpus = "corpora/mdns-corpus" |
| } |
| |
| webrtc_fuzzer_test("pseudotcp_parser_fuzzer") { |
| sources = [ "pseudotcp_parser_fuzzer.cc" ] |
| deps = [ |
| "../../p2p:rtc_p2p", |
| "../../rtc_base", |
| ] |
| } |
| |
| rtc_library("audio_processing_fuzzer_helper") { |
| testonly = true |
| sources = [ |
| "audio_processing_fuzzer_helper.cc", |
| "audio_processing_fuzzer_helper.h", |
| ] |
| deps = [ |
| ":fuzz_data_helper", |
| "../../api/audio:audio_frame_api", |
| "../../modules/audio_processing", |
| "../../modules/audio_processing:api", |
| "../../modules/audio_processing:audio_frame_proxies", |
| "../../rtc_base:checks", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] |
| } |
| |
| webrtc_fuzzer_test("audio_processing_fuzzer") { |
| sources = [ "audio_processing_configs_fuzzer.cc" ] |
| deps = [ |
| ":audio_processing_fuzzer_helper", |
| "../../api:scoped_refptr", |
| "../../api/audio:aec3_factory", |
| "../../api/task_queue:default_task_queue_factory", |
| "../../modules/audio_processing", |
| "../../modules/audio_processing:api", |
| "../../modules/audio_processing:audio_buffer", |
| "../../modules/audio_processing:audioproc_test_utils", |
| "../../modules/audio_processing/aec3", |
| "../../modules/audio_processing/aec_dump", |
| "../../modules/audio_processing/aec_dump:aec_dump_impl", |
| "../../rtc_base:rtc_base_approved", |
| "../../rtc_base:rtc_task_queue", |
| "../../rtc_base:safe_minmax", |
| "../../system_wrappers:field_trial", |
| ] |
| absl_deps = [ "//third_party/abseil-cpp/absl/memory" ] |
| seed_corpus = "corpora/audio_processing-corpus" |
| } |
| |
| webrtc_fuzzer_test("agc_fuzzer") { |
| sources = [ "agc_fuzzer.cc" ] |
| deps = [ |
| ":fuzz_data_helper", |
| "../../modules/audio_processing", |
| "../../modules/audio_processing:api", |
| "../../modules/audio_processing:audio_buffer", |
| "../../rtc_base:rtc_base_approved", |
| "../../rtc_base:safe_minmax", |
| ] |
| |
| seed_corpus = "corpora/agc-corpus" |
| } |
| |
| webrtc_fuzzer_test("aec3_config_json_fuzzer") { |
| sources = [ "aec3_config_json_fuzzer.cc" ] |
| deps = [ |
| ":fuzz_data_helper", |
| "../../api/audio:aec3_config", |
| "../../api/audio:aec3_config_json", |
| ] |
| dict = "//testing/libfuzzer/fuzzers/dicts/json.dict" |
| seed_corpus = "corpora/aec3-config-json-corpus" |
| } |
| |
| webrtc_fuzzer_test("aec3_fuzzer") { |
| defines = [] |
| if (apm_debug_dump) { |
| defines += [ "WEBRTC_APM_DEBUG_DUMP=1" ] |
| } else { |
| defines += [ "WEBRTC_APM_DEBUG_DUMP=0" ] |
| } |
| sources = [ "aec3_fuzzer.cc" ] |
| deps = [ |
| ":fuzz_data_helper", |
| "../../modules/audio_processing:api", |
| "../../modules/audio_processing:audio_buffer", |
| "../../modules/audio_processing/aec3", |
| ] |
| } |
| |
| webrtc_fuzzer_test("comfort_noise_decoder_fuzzer") { |
| sources = [ "comfort_noise_decoder_fuzzer.cc" ] |
| deps = [ |
| "../../api:array_view", |
| "../../modules/audio_coding:webrtc_cng", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("rtp_depacketizer_av1_assemble_frame_fuzzer") { |
| sources = [ "rtp_depacketizer_av1_assemble_frame_fuzzer.cc" ] |
| seed_corpus = "corpora/rtp-depacketizer-av1-assemble-frame-corpus" |
| deps = [ |
| ":fuzz_data_helper", |
| "../../api:array_view", |
| "../../modules/rtp_rtcp", |
| ] |
| } |
| |
| webrtc_fuzzer_test("rtp_dependency_descriptor_fuzzer") { |
| sources = [ "rtp_dependency_descriptor_fuzzer.cc" ] |
| seed_corpus = "corpora/dependency_descriptor-corpus" |
| deps = [ |
| "../../api:array_view", |
| "../../common_video/generic_frame_descriptor", |
| "../../modules/rtp_rtcp:rtp_rtcp_format", |
| "../../rtc_base:checks", |
| ] |
| } |
| |
| webrtc_fuzzer_test("rtp_frame_reference_finder_fuzzer") { |
| sources = [ "rtp_frame_reference_finder_fuzzer.cc" ] |
| deps = [ |
| "../../api:rtp_packet_info", |
| "../../api:scoped_refptr", |
| "../../modules/video_coding/", |
| "../../system_wrappers", |
| ] |
| } |
| |
| webrtc_fuzzer_test("frame_buffer2_fuzzer") { |
| sources = [ "frame_buffer2_fuzzer.cc" ] |
| deps = [ |
| "../../modules/video_coding/", |
| "../time_controller:time_controller", |
| ] |
| } |
| |
| webrtc_fuzzer_test("field_trial_fuzzer") { |
| sources = [ "field_trial_fuzzer.cc" ] |
| deps = [ "../../system_wrappers:field_trial" ] |
| seed_corpus = "corpora/field_trial-corpus" |
| } |
| |
| webrtc_fuzzer_test("string_to_number_fuzzer") { |
| sources = [ "string_to_number_fuzzer.cc" ] |
| deps = [ "../../rtc_base:rtc_base_approved" ] |
| seed_corpus = "corpora/string_to_number-corpus" |
| } |
| |
| webrtc_fuzzer_test("sctp_utils_fuzzer") { |
| sources = [ "sctp_utils_fuzzer.cc" ] |
| deps = [ |
| "../../api:libjingle_peerconnection_api", |
| "../../pc:libjingle_peerconnection", |
| "../../pc:rtc_pc_base", |
| "../../rtc_base:rtc_base_approved", |
| ] |
| } |
| |
| webrtc_fuzzer_test("rtp_header_parser_fuzzer") { |
| sources = [ "rtp_header_parser_fuzzer.cc" ] |
| deps = [ "../:rtp_test_utils" ] |
| } |
| |
| webrtc_fuzzer_test("ssl_certificate_fuzzer") { |
| sources = [ "rtp_header_parser_fuzzer.cc" ] |
| deps = [ "../:rtp_test_utils" ] |
| } |
| |
| webrtc_fuzzer_test("vp8_replay_fuzzer") { |
| sources = [ "vp8_replay_fuzzer.cc" ] |
| deps = [ |
| "../../rtc_base:rtc_base_approved", |
| "utils:rtp_replayer", |
| ] |
| seed_corpus = "corpora/rtpdump-corpus/vp8" |
| } |
| |
| webrtc_fuzzer_test("vp9_replay_fuzzer") { |
| sources = [ "vp9_replay_fuzzer.cc" ] |
| deps = [ |
| "../../rtc_base:rtc_base_approved", |
| "utils:rtp_replayer", |
| ] |
| seed_corpus = "corpora/rtpdump-corpus/vp9" |
| } |