blob: b95773d533683f65553e28e0026eeb56e6093a14 [file] [log] [blame]
# 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") {
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.
}
template("webrtc_fuzzer_test") {
fuzzer_test(target_name) {
forward_variables_from(invoker, "*")
deps += [
":fuzz_data_helper",
":webrtc_fuzzer_main",
]
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("generic_depacketizer_fuzzer") {
sources = [
"generic_depacketizer_fuzzer.cc",
]
deps = [
"../../modules/rtp_rtcp",
]
}
webrtc_fuzzer_test("vp8_depacketizer_fuzzer") {
sources = [
"vp8_depacketizer_fuzzer.cc",
]
deps = [
"../../modules/rtp_rtcp",
]
}
webrtc_fuzzer_test("vp9_depacketizer_fuzzer") {
sources = [
"vp9_depacketizer_fuzzer.cc",
]
deps = [
"../../modules/rtp_rtcp",
]
}
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",
]
}
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",
"//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") {
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",
"//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",
]
}
webrtc_fuzzer_test("audio_encoder_opus_fuzzer") {
sources = [
"audio_encoder_opus_fuzzer.cc",
]
deps = [
"../../api:array_view",
"../../api/audio_codecs/opus:audio_encoder_opus",
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
]
}
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 = [
"../../modules/audio_processing",
"../../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") {
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",
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
"//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/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",
"//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_parse_fuzzer") {
sources = [
"rtp_depacketizer_av1_parse_fuzzer.cc",
]
deps = [
"../../modules/rtp_rtcp",
]
}
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/",
"../../system_wrappers",
]
}
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("rtp_rtcp_demuxer_helper_fuzzer") {
sources = [
"rtp_rtcp_demuxer_helper_fuzzer.cc",
]
deps = [
"../../api:array_view",
"../../call:rtp_receiver",
]
seed_corpus = "corpora/rtcp-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"
}