Reland "Add a fuzzer test that tries to connect a PeerConnection."
This reverts commit ae44fde18854390ca7a51bcab37ef199a1555e38. Reason for revert: Added Chromium compile guards Original change's description: > Revert "Add a fuzzer test that tries to connect a PeerConnection." > > This reverts commit c67b77eee4b08c05638a219723a9141a65015da4. > > Reason for revert: Breaks the libfuzzer chromium bots for WebRTC roll. > > Original change's description: > > Add a fuzzer test that tries to connect a PeerConnection. > > > > Bug: none > > Change-Id: I975c6a4cd5c7dfc4a7689259292ea7d443d270f7 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/209182 > > Commit-Queue: Harald Alvestrand <hta@webrtc.org> > > Reviewed-by: Henrik Boström <hbos@webrtc.org> > > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#33369} > > NOPRESUBMIT=true > > Bug: none > Change-Id: Ib5fa809eb698c64b7c01835e8a311eaf85b19a18 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/209640 > Commit-Queue: Evan Shrubsole <eshr@google.com> > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#33380} Bug: none Change-Id: I07bab58f1216fb91b9b607e7ba978c28838d9411 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/210680 Reviewed-by: Henrik Boström <hbos@webrtc.org> Commit-Queue: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/master@{#33397}
This commit is contained in:

committed by
Commit Bot

parent
be66d95ab7
commit
82a94125a4
268
pc/BUILD.gn
268
pc/BUILD.gn
@ -958,87 +958,6 @@ if (rtc_include_tests && !build_with_chromium) {
|
||||
]
|
||||
}
|
||||
|
||||
rtc_library("pc_test_utils") {
|
||||
testonly = true
|
||||
sources = [
|
||||
"test/fake_audio_capture_module.cc",
|
||||
"test/fake_audio_capture_module.h",
|
||||
"test/fake_data_channel_provider.h",
|
||||
"test/fake_peer_connection_base.h",
|
||||
"test/fake_peer_connection_for_stats.h",
|
||||
"test/fake_periodic_video_source.h",
|
||||
"test/fake_periodic_video_track_source.h",
|
||||
"test/fake_rtc_certificate_generator.h",
|
||||
"test/fake_video_track_renderer.h",
|
||||
"test/fake_video_track_source.h",
|
||||
"test/frame_generator_capturer_video_track_source.h",
|
||||
"test/mock_channel_interface.h",
|
||||
"test/mock_data_channel.h",
|
||||
"test/mock_delayable.h",
|
||||
"test/mock_peer_connection_observers.h",
|
||||
"test/mock_rtp_receiver_internal.h",
|
||||
"test/mock_rtp_sender_internal.h",
|
||||
"test/peer_connection_test_wrapper.cc",
|
||||
"test/peer_connection_test_wrapper.h",
|
||||
"test/rtc_stats_obtainer.h",
|
||||
"test/test_sdp_strings.h",
|
||||
]
|
||||
|
||||
deps = [
|
||||
":jitter_buffer_delay",
|
||||
":jitter_buffer_delay_interface",
|
||||
":libjingle_peerconnection",
|
||||
":peerconnection",
|
||||
":rtc_pc_base",
|
||||
":rtp_receiver",
|
||||
":rtp_sender",
|
||||
":video_track_source",
|
||||
"../api:audio_options_api",
|
||||
"../api:create_frame_generator",
|
||||
"../api:create_peerconnection_factory",
|
||||
"../api:libjingle_peerconnection_api",
|
||||
"../api:media_stream_interface",
|
||||
"../api:rtc_error",
|
||||
"../api:rtc_stats_api",
|
||||
"../api:scoped_refptr",
|
||||
"../api:sequence_checker",
|
||||
"../api/audio:audio_mixer_api",
|
||||
"../api/audio_codecs:audio_codecs_api",
|
||||
"../api/task_queue",
|
||||
"../api/task_queue:default_task_queue_factory",
|
||||
"../api/video:builtin_video_bitrate_allocator_factory",
|
||||
"../api/video:video_frame",
|
||||
"../api/video:video_rtp_headers",
|
||||
"../api/video_codecs:builtin_video_decoder_factory",
|
||||
"../api/video_codecs:builtin_video_encoder_factory",
|
||||
"../api/video_codecs:video_codecs_api",
|
||||
"../call:call_interfaces",
|
||||
"../media:rtc_data",
|
||||
"../media:rtc_media",
|
||||
"../media:rtc_media_base",
|
||||
"../media:rtc_media_tests_utils",
|
||||
"../modules/audio_device",
|
||||
"../modules/audio_processing",
|
||||
"../modules/audio_processing:api",
|
||||
"../p2p:fake_port_allocator",
|
||||
"../p2p:p2p_test_utils",
|
||||
"../p2p:rtc_p2p",
|
||||
"../rtc_base",
|
||||
"../rtc_base:checks",
|
||||
"../rtc_base:gunit_helpers",
|
||||
"../rtc_base:rtc_base_approved",
|
||||
"../rtc_base:rtc_task_queue",
|
||||
"../rtc_base:task_queue_for_test",
|
||||
"../rtc_base:threading",
|
||||
"../rtc_base/synchronization:mutex",
|
||||
"../rtc_base/task_utils:repeating_task",
|
||||
"../rtc_base/third_party/sigslot",
|
||||
"../test:test_support",
|
||||
"../test:video_test_common",
|
||||
]
|
||||
absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
|
||||
}
|
||||
|
||||
rtc_test("peerconnection_unittests") {
|
||||
testonly = true
|
||||
sources = [
|
||||
@ -1080,8 +999,6 @@ if (rtc_include_tests && !build_with_chromium) {
|
||||
"sdp_serializer_unittest.cc",
|
||||
"stats_collector_unittest.cc",
|
||||
"test/fake_audio_capture_module_unittest.cc",
|
||||
"test/integration_test_helpers.cc",
|
||||
"test/integration_test_helpers.h",
|
||||
"test/test_sdp_strings.h",
|
||||
"track_media_info_map_unittest.cc",
|
||||
"video_rtp_track_source_unittest.cc",
|
||||
@ -1097,6 +1014,7 @@ if (rtc_include_tests && !build_with_chromium) {
|
||||
":audio_rtp_receiver",
|
||||
":audio_track",
|
||||
":dtmf_sender",
|
||||
":integration_test_helpers",
|
||||
":jitter_buffer_delay",
|
||||
":jitter_buffer_delay_interface",
|
||||
":media_stream",
|
||||
@ -1244,4 +1162,188 @@ if (rtc_include_tests && !build_with_chromium) {
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
rtc_library("integration_test_helpers") {
|
||||
testonly = true
|
||||
sources = [
|
||||
"test/integration_test_helpers.cc",
|
||||
"test/integration_test_helpers.h",
|
||||
]
|
||||
deps = [
|
||||
":audio_rtp_receiver",
|
||||
":audio_track",
|
||||
":dtmf_sender",
|
||||
":jitter_buffer_delay",
|
||||
":jitter_buffer_delay_interface",
|
||||
":media_stream",
|
||||
":pc_test_utils",
|
||||
":peerconnection",
|
||||
":remote_audio_source",
|
||||
":rtc_pc_base",
|
||||
":rtp_parameters_conversion",
|
||||
":rtp_receiver",
|
||||
":rtp_sender",
|
||||
":rtp_transceiver",
|
||||
":usage_pattern",
|
||||
":video_rtp_receiver",
|
||||
":video_rtp_track_source",
|
||||
":video_track",
|
||||
":video_track_source",
|
||||
"../api:array_view",
|
||||
"../api:audio_options_api",
|
||||
"../api:callfactory_api",
|
||||
"../api:create_peerconnection_factory",
|
||||
"../api:fake_frame_decryptor",
|
||||
"../api:fake_frame_encryptor",
|
||||
"../api:function_view",
|
||||
"../api:libjingle_logging_api",
|
||||
"../api:libjingle_peerconnection_api",
|
||||
"../api:media_stream_interface",
|
||||
"../api:mock_rtp",
|
||||
"../api:packet_socket_factory",
|
||||
"../api:rtc_error",
|
||||
"../api:rtc_stats_api",
|
||||
"../api:rtp_parameters",
|
||||
"../api:rtp_transceiver_direction",
|
||||
"../api:scoped_refptr",
|
||||
"../api/audio:audio_mixer_api",
|
||||
"../api/crypto:frame_decryptor_interface",
|
||||
"../api/crypto:frame_encryptor_interface",
|
||||
"../api/crypto:options",
|
||||
"../api/rtc_event_log",
|
||||
"../api/rtc_event_log:rtc_event_log_factory",
|
||||
"../api/task_queue",
|
||||
"../api/task_queue:default_task_queue_factory",
|
||||
"../api/transport:field_trial_based_config",
|
||||
"../api/transport:webrtc_key_value_config",
|
||||
"../api/transport/rtp:rtp_source",
|
||||
"../api/units:time_delta",
|
||||
"../api/video:builtin_video_bitrate_allocator_factory",
|
||||
"../api/video:video_rtp_headers",
|
||||
"../api/video_codecs:video_codecs_api",
|
||||
"../call:call_interfaces",
|
||||
"../call/adaptation:resource_adaptation_test_utilities",
|
||||
"../logging:fake_rtc_event_log",
|
||||
"../media:rtc_audio_video",
|
||||
"../media:rtc_media_base",
|
||||
"../media:rtc_media_config",
|
||||
"../media:rtc_media_engine_defaults",
|
||||
"../media:rtc_media_tests_utils",
|
||||
"../modules/audio_device:audio_device_api",
|
||||
"../modules/audio_processing:api",
|
||||
"../modules/audio_processing:audio_processing_statistics",
|
||||
"../modules/audio_processing:audioproc_test_utils",
|
||||
"../modules/rtp_rtcp:rtp_rtcp_format",
|
||||
"../p2p:fake_ice_transport",
|
||||
"../p2p:fake_port_allocator",
|
||||
"../p2p:p2p_server_utils",
|
||||
"../p2p:p2p_test_utils",
|
||||
"../p2p:rtc_p2p",
|
||||
"../rtc_base",
|
||||
"../rtc_base:checks",
|
||||
"../rtc_base:gunit_helpers",
|
||||
"../rtc_base:ip_address",
|
||||
"../rtc_base:rtc_base_tests_utils",
|
||||
"../rtc_base:rtc_json",
|
||||
"../rtc_base:socket_address",
|
||||
"../rtc_base:threading",
|
||||
"../rtc_base:timeutils",
|
||||
"../rtc_base/synchronization:mutex",
|
||||
"../rtc_base/third_party/base64",
|
||||
"../rtc_base/third_party/sigslot",
|
||||
"../system_wrappers:metrics",
|
||||
"../test:field_trial",
|
||||
"../test:fileutils",
|
||||
"../test:rtp_test_utils",
|
||||
"../test:test_support",
|
||||
"../test/pc/sctp:fake_sctp_transport",
|
||||
]
|
||||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/algorithm:container",
|
||||
"//third_party/abseil-cpp/absl/memory",
|
||||
"//third_party/abseil-cpp/absl/strings",
|
||||
"//third_party/abseil-cpp/absl/types:optional",
|
||||
]
|
||||
}
|
||||
|
||||
rtc_library("pc_test_utils") {
|
||||
testonly = true
|
||||
sources = [
|
||||
"test/fake_audio_capture_module.cc",
|
||||
"test/fake_audio_capture_module.h",
|
||||
"test/fake_data_channel_provider.h",
|
||||
"test/fake_peer_connection_base.h",
|
||||
"test/fake_peer_connection_for_stats.h",
|
||||
"test/fake_periodic_video_source.h",
|
||||
"test/fake_periodic_video_track_source.h",
|
||||
"test/fake_rtc_certificate_generator.h",
|
||||
"test/fake_video_track_renderer.h",
|
||||
"test/fake_video_track_source.h",
|
||||
"test/frame_generator_capturer_video_track_source.h",
|
||||
"test/mock_channel_interface.h",
|
||||
"test/mock_data_channel.h",
|
||||
"test/mock_delayable.h",
|
||||
"test/mock_peer_connection_observers.h",
|
||||
"test/mock_rtp_receiver_internal.h",
|
||||
"test/mock_rtp_sender_internal.h",
|
||||
"test/peer_connection_test_wrapper.cc",
|
||||
"test/peer_connection_test_wrapper.h",
|
||||
"test/rtc_stats_obtainer.h",
|
||||
"test/test_sdp_strings.h",
|
||||
]
|
||||
|
||||
deps = [
|
||||
":jitter_buffer_delay",
|
||||
":jitter_buffer_delay_interface",
|
||||
":libjingle_peerconnection",
|
||||
":peerconnection",
|
||||
":rtc_pc_base",
|
||||
":rtp_receiver",
|
||||
":rtp_sender",
|
||||
":video_track_source",
|
||||
"../api:audio_options_api",
|
||||
"../api:create_frame_generator",
|
||||
"../api:create_peerconnection_factory",
|
||||
"../api:libjingle_peerconnection_api",
|
||||
"../api:media_stream_interface",
|
||||
"../api:rtc_error",
|
||||
"../api:rtc_stats_api",
|
||||
"../api:scoped_refptr",
|
||||
"../api:sequence_checker",
|
||||
"../api/audio:audio_mixer_api",
|
||||
"../api/audio_codecs:audio_codecs_api",
|
||||
"../api/task_queue",
|
||||
"../api/task_queue:default_task_queue_factory",
|
||||
"../api/video:builtin_video_bitrate_allocator_factory",
|
||||
"../api/video:video_frame",
|
||||
"../api/video:video_rtp_headers",
|
||||
"../api/video_codecs:builtin_video_decoder_factory",
|
||||
"../api/video_codecs:builtin_video_encoder_factory",
|
||||
"../api/video_codecs:video_codecs_api",
|
||||
"../call:call_interfaces",
|
||||
"../media:rtc_data",
|
||||
"../media:rtc_media",
|
||||
"../media:rtc_media_base",
|
||||
"../media:rtc_media_tests_utils",
|
||||
"../modules/audio_device",
|
||||
"../modules/audio_processing",
|
||||
"../modules/audio_processing:api",
|
||||
"../p2p:fake_port_allocator",
|
||||
"../p2p:p2p_test_utils",
|
||||
"../p2p:rtc_p2p",
|
||||
"../rtc_base",
|
||||
"../rtc_base:checks",
|
||||
"../rtc_base:gunit_helpers",
|
||||
"../rtc_base:rtc_base_approved",
|
||||
"../rtc_base:rtc_task_queue",
|
||||
"../rtc_base:task_queue_for_test",
|
||||
"../rtc_base:threading",
|
||||
"../rtc_base/synchronization:mutex",
|
||||
"../rtc_base/task_utils:repeating_task",
|
||||
"../rtc_base/third_party/sigslot",
|
||||
"../test:test_support",
|
||||
"../test:video_test_common",
|
||||
]
|
||||
absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
|
||||
}
|
||||
}
|
||||
|
@ -406,6 +406,23 @@ webrtc_fuzzer_test("sdp_parser_fuzzer") {
|
||||
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 = [
|
||||
|
46
test/fuzzers/sdp_integration_fuzzer.cc
Normal file
46
test/fuzzers/sdp_integration_fuzzer.cc
Normal file
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (c) 2021 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.
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "pc/test/integration_test_helpers.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
class FuzzerTest : public PeerConnectionIntegrationBaseTest {
|
||||
public:
|
||||
FuzzerTest()
|
||||
: PeerConnectionIntegrationBaseTest(SdpSemantics::kUnifiedPlan) {}
|
||||
|
||||
void TestBody() override {}
|
||||
};
|
||||
|
||||
void FuzzOneInput(const uint8_t* data, size_t size) {
|
||||
if (size > 16384) {
|
||||
return;
|
||||
}
|
||||
std::string message(reinterpret_cast<const char*>(data), size);
|
||||
|
||||
FuzzerTest test;
|
||||
test.CreatePeerConnectionWrappers();
|
||||
test.ConnectFakeSignaling();
|
||||
|
||||
rtc::scoped_refptr<MockSetSessionDescriptionObserver> srd_observer(
|
||||
new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
|
||||
|
||||
webrtc::SdpParseError error;
|
||||
std::unique_ptr<webrtc::SessionDescriptionInterface> sdp(
|
||||
CreateSessionDescription("offer", message, &error));
|
||||
// Note: This form of SRD takes ownership of the description.
|
||||
test.caller()->pc()->SetRemoteDescription(srd_observer, sdp.release());
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
Reference in New Issue
Block a user