# 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 = [
    "../../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_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 = [
    "../../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_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 = [
    "../../p2p:rtc_p2p",
    "../../p2p:stun_types",
  ]
  seed_corpus = "corpora/stun-corpus"
  dict = "corpora/stun.tokens"
}

webrtc_fuzzer_test("stun_validator_fuzzer") {
  sources = [
    "stun_validator_fuzzer.cc",
  ]
  deps = [
    "../../p2p:rtc_p2p",
    "../../p2p:stun_types",
  ]
  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",
    "../../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",
    "//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:rtp_packet_info",
    "../../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 = [
    "../: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",
    "//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"
}
