# 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("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",
    "//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_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("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"
}
