# 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, field trial, and system time.
  if (build_with_chromium) {
    deps += [
      "../../../webrtc_overrides:field_trial",
      "../../../webrtc_overrides:metrics",
      "../../../webrtc_overrides:system_time",
    ]
  }
}

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",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/functional:bind_front" ]
}

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"
}

if (!build_with_chromium) {
  # This target depends on test infrastructure that can't be built
  # with Chromium at the moment.
  # TODO(bugs.chromium.org/12534): Make this fuzzer build in Chromium.

  webrtc_fuzzer_test("sdp_integration_fuzzer") {
    sources = [ "sdp_integration_fuzzer.cc" ]
    deps = [
      "../../api:libjingle_peerconnection_api",
      "../../pc:integration_test_helpers",
      "../../pc:libjingle_peerconnection",
      "../../test:test_support",
    ]
    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("pseudotcp_parser_fuzzer") {
  sources = [ "pseudotcp_parser_fuzzer.cc" ]
  deps = [
    "../../p2p:rtc_p2p",
    "../../rtc_base",
    "../../rtc_base:threading",
  ]
}

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("dcsctp_socket_fuzzer") {
  sources = [ "dcsctp_socket_fuzzer.cc" ]
  deps = [
    "../../net/dcsctp/fuzzers:dcsctp_fuzzers",
    "../../net/dcsctp/public:socket",
    "../../net/dcsctp/public:types",
    "../../net/dcsctp/socket:dcsctp_socket",
    "../../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"
}

if (rtc_build_libvpx) {
  webrtc_fuzzer_test("vp9_encoder_references_fuzzer") {
    sources = [ "vp9_encoder_references_fuzzer.cc" ]
    deps = [
      "..:test_support",
      "../../api:array_view",
      "../../api/transport:webrtc_key_value_config",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../modules/video_coding:frame_dependencies_calculator",
      "../../modules/video_coding:mock_libvpx_interface",
      "../../modules/video_coding:webrtc_vp9",
      "../../rtc_base:safe_compare",
      rtc_libvpx_dir,
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/base:core_headers",
      "//third_party/abseil-cpp/absl/container:inlined_vector",
    ]
    defines = [ "RTC_ENABLE_VP9" ]
  }
}

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"
}
