# 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_static_library("webrtc_fuzzer_main") { sources = [ "webrtc_fuzzer_main.cc", ] deps = [ "../../api/task_queue:global_task_queue_factory", "../../rtc_base:rtc_base_approved", "../../rtc_base:rtc_task_queue_stdlib", "//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_static_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 = [ "../../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_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 = [ "../../logging:rtc_event_log_api", "../../logging:rtc_event_log_impl_base", "../../modules/congestion_controller", "../../modules/pacing", "../../modules/remote_bitrate_estimator", "../../modules/rtp_rtcp:rtp_rtcp_format", ] } rtc_static_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_isac_incoming_packet_fuzzer") { sources = [ "audio_decoder_isac_incoming_packet_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_encoder_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 = [ "../../p2p:rtc_p2p", ] seed_corpus = "corpora/stun-corpus" dict = "corpora/stun.tokens" } webrtc_fuzzer_test("stun_validator_fuzzer") { sources = [ "stun_validator_fuzzer.cc", ] deps = [ "../../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", "//third_party/abseil-cpp/absl/memory", ] seed_corpus = "corpora/mdns-corpus" } webrtc_fuzzer_test("pseudotcp_parser_fuzzer") { sources = [ "pseudotcp_parser_fuzzer.cc", ] deps = [ "../../p2p:rtc_p2p", "../../rtc_base", ] } webrtc_fuzzer_test("transport_feedback_packet_loss_tracker_fuzzer") { sources = [ "transport_feedback_packet_loss_tracker_fuzzer.cc", ] deps = [ "../../api:array_view", "../../audio", "../../modules/rtp_rtcp:rtp_rtcp_format", "../../rtc_base:rtc_base_approved", ] } rtc_static_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", "../../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", "//third_party/abseil-cpp/absl/memory", ] seed_corpus = "corpora/agc-corpus" } 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_frame_reference_finder_fuzzer") { sources = [ "rtp_frame_reference_finder_fuzzer.cc", ] deps = [ "../../api:scoped_refptr", "../../modules/video_coding/", "../../system_wrappers", "//third_party/abseil-cpp/absl/memory", ] } 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:peerconnection", "../../rtc_base:rtc_base_approved", ] } webrtc_fuzzer_test("rtp_header_parser_fuzzer") { sources = [ "rtp_header_parser_fuzzer.cc", ] deps = [ "../../modules/rtp_rtcp", ] } webrtc_fuzzer_test("ssl_certificate_fuzzer") { sources = [ "rtp_header_parser_fuzzer.cc", ] deps = [ "../../modules/rtp_rtcp", ] } webrtc_fuzzer_test("vp8_replay_fuzzer") { sources = [ "vp8_replay_fuzzer.cc", ] deps = [ "../../rtc_base:rtc_base_approved", "utils:rtp_replayer", "//third_party/abseil-cpp/absl/memory", ] 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", "//third_party/abseil-cpp/absl/memory", ] seed_corpus = "corpora/rtpdump-corpus/vp9" }