• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS.  All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9import("//build/config/features.gni")
10import("//testing/libfuzzer/fuzzer_test.gni")
11import("../../webrtc.gni")
12
13rtc_library("webrtc_fuzzer_main") {
14  sources = [ "webrtc_fuzzer_main.cc" ]
15  deps = [
16    "../../rtc_base:rtc_base_approved",
17    "//testing/libfuzzer:libfuzzer_main",
18  ]
19
20  # When WebRTC fuzzer tests are built on Chromium bots they need to link
21  # with Chromium's implementation of metrics and field trial.
22  if (build_with_chromium) {
23    deps += [
24      "../../../webrtc_overrides:field_trial",
25      "../../../webrtc_overrides:metrics",
26    ]
27  }
28}
29
30rtc_library("fuzz_data_helper") {
31  testonly = true
32  sources = [
33    "fuzz_data_helper.cc",
34    "fuzz_data_helper.h",
35  ]
36  deps = [
37    "../../api:array_view",
38    "../../modules/rtp_rtcp:rtp_rtcp_format",
39  ]
40  visibility = [ ":*" ]  # Only targets in this file can depend on this.
41}
42
43set_defaults("webrtc_fuzzer_test") {
44  absl_deps = []
45}
46
47template("webrtc_fuzzer_test") {
48  fuzzer_test(target_name) {
49    forward_variables_from(invoker, "*")
50    deps += [
51      ":fuzz_data_helper",
52      ":webrtc_fuzzer_main",
53    ]
54
55    # If absl_deps is [], no action is needed. If not [], then it needs to be
56    # converted to //third_party/abseil-cpp:absl when build_with_chromium=true
57    # otherwise it just needs to be added to deps.
58    if (absl_deps != []) {
59      if (!defined(deps)) {
60        deps = []
61      }
62      if (build_with_chromium) {
63        deps += [ "//third_party/abseil-cpp:absl" ]
64      } else {
65        deps += absl_deps
66      }
67    }
68
69    if (!build_with_chromium && is_clang) {
70      suppressed_configs = [ "//build/config/clang:find_bad_constructs" ]
71    }
72  }
73}
74
75webrtc_fuzzer_test("h264_depacketizer_fuzzer") {
76  sources = [ "h264_depacketizer_fuzzer.cc" ]
77  deps = [ "../../modules/rtp_rtcp" ]
78}
79
80webrtc_fuzzer_test("vp8_depacketizer_fuzzer") {
81  sources = [ "vp8_depacketizer_fuzzer.cc" ]
82  deps = [
83    "../../api:array_view",
84    "../../modules/rtp_rtcp",
85    "../../modules/rtp_rtcp:rtp_video_header",
86  ]
87}
88
89webrtc_fuzzer_test("vp9_depacketizer_fuzzer") {
90  sources = [ "vp9_depacketizer_fuzzer.cc" ]
91  deps = [
92    "../../api:array_view",
93    "../../modules/rtp_rtcp",
94    "../../modules/rtp_rtcp:rtp_video_header",
95  ]
96}
97
98webrtc_fuzzer_test("vp8_qp_parser_fuzzer") {
99  sources = [ "vp8_qp_parser_fuzzer.cc" ]
100  deps = [
101    "../../modules/video_coding:video_coding_utility",
102    "../../modules/video_coding/",
103  ]
104}
105
106webrtc_fuzzer_test("vp9_qp_parser_fuzzer") {
107  sources = [ "vp9_qp_parser_fuzzer.cc" ]
108  deps = [
109    "../../modules/video_coding:video_coding_utility",
110    "../../modules/video_coding/",
111  ]
112}
113
114webrtc_fuzzer_test("h264_bitstream_parser_fuzzer") {
115  sources = [ "h264_bitstream_parser_fuzzer.cc" ]
116  deps = [
117    "../../common_video",
118    "../../modules/video_coding/",
119  ]
120}
121
122webrtc_fuzzer_test("forward_error_correction_fuzzer") {
123  sources = [ "forward_error_correction_fuzzer.cc" ]
124  deps = [
125    "../../api:scoped_refptr",
126    "../../modules/rtp_rtcp",
127    "../../modules/rtp_rtcp:rtp_rtcp_format",
128    "../../rtc_base:rtc_base_approved",
129  ]
130}
131
132webrtc_fuzzer_test("flexfec_header_reader_fuzzer") {
133  sources = [ "flexfec_header_reader_fuzzer.cc" ]
134  deps = [
135    "../../api:scoped_refptr",
136    "../../modules/rtp_rtcp",
137    "../../modules/rtp_rtcp:rtp_rtcp_format",
138    "../../rtc_base:rtc_base_approved",
139  ]
140}
141
142webrtc_fuzzer_test("flexfec_sender_fuzzer") {
143  sources = [ "flexfec_sender_fuzzer.cc" ]
144  deps = [
145    "../../modules/rtp_rtcp",
146    "../../modules/rtp_rtcp:rtp_rtcp_format",
147    "../../system_wrappers",
148  ]
149}
150
151webrtc_fuzzer_test("ulpfec_header_reader_fuzzer") {
152  sources = [ "ulpfec_header_reader_fuzzer.cc" ]
153  deps = [
154    "../../api:scoped_refptr",
155    "../../modules/rtp_rtcp",
156    "../../modules/rtp_rtcp:fec_test_helper",
157    "../../modules/rtp_rtcp:rtp_rtcp_format",
158    "../../rtc_base:rtc_base_approved",
159  ]
160}
161
162webrtc_fuzzer_test("ulpfec_generator_fuzzer") {
163  sources = [ "ulpfec_generator_fuzzer.cc" ]
164  deps = [
165    "../../modules:module_api_public",
166    "../../modules/rtp_rtcp",
167    "../../modules/rtp_rtcp:fec_test_helper",
168    "../../modules/rtp_rtcp:rtp_rtcp_format",
169    "../../rtc_base:checks",
170    "../../rtc_base:rtc_base_approved",
171    "../../system_wrappers",
172  ]
173}
174
175webrtc_fuzzer_test("ulpfec_receiver_fuzzer") {
176  sources = [ "ulpfec_receiver_fuzzer.cc" ]
177  deps = [
178    ":fuzz_data_helper",
179    "../../modules/rtp_rtcp",
180    "../../modules/rtp_rtcp:rtp_rtcp_format",
181    "../../rtc_base:rtc_base_approved",
182  ]
183}
184
185webrtc_fuzzer_test("flexfec_receiver_fuzzer") {
186  sources = [ "flexfec_receiver_fuzzer.cc" ]
187  deps = [
188    "../../modules/rtp_rtcp",
189    "../../modules/rtp_rtcp:rtp_rtcp_format",
190    "../../rtc_base:rtc_base_approved",
191  ]
192}
193
194webrtc_fuzzer_test("packet_buffer_fuzzer") {
195  sources = [ "packet_buffer_fuzzer.cc" ]
196  deps = [
197    "../../modules/video_coding/",
198    "../../system_wrappers",
199  ]
200}
201
202webrtc_fuzzer_test("rtcp_receiver_fuzzer") {
203  sources = [ "rtcp_receiver_fuzzer.cc" ]
204  deps = [
205    "../../modules/rtp_rtcp",
206    "../../modules/rtp_rtcp:rtp_rtcp_format",
207    "../../rtc_base:checks",
208    "../../rtc_base:rtc_base_approved",
209    "../../system_wrappers",
210  ]
211  seed_corpus = "corpora/rtcp-corpus"
212}
213
214webrtc_fuzzer_test("rtp_packet_fuzzer") {
215  sources = [ "rtp_packet_fuzzer.cc" ]
216  deps = [ "../../modules/rtp_rtcp:rtp_rtcp_format" ]
217  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
218  seed_corpus = "corpora/rtp-corpus"
219}
220
221webrtc_fuzzer_test("rtp_packetizer_av1_fuzzer") {
222  sources = [ "rtp_packetizer_av1_fuzzer.cc" ]
223  deps = [
224    "../../api/video:video_frame_type",
225    "../../modules/rtp_rtcp:rtp_rtcp",
226    "../../modules/rtp_rtcp:rtp_rtcp_format",
227    "../../rtc_base:checks",
228  ]
229}
230
231webrtc_fuzzer_test("rtp_header_fuzzer") {
232  sources = [ "rtp_header_fuzzer.cc" ]
233  deps = [
234    "../../modules/rtp_rtcp",
235    "../../modules/rtp_rtcp:rtp_rtcp_format",
236  ]
237}
238
239webrtc_fuzzer_test("congestion_controller_feedback_fuzzer") {
240  sources = [ "congestion_controller_feedback_fuzzer.cc" ]
241  deps = [
242    "../../modules/congestion_controller",
243    "../../modules/pacing",
244    "../../modules/remote_bitrate_estimator",
245    "../../modules/rtp_rtcp:rtp_rtcp_format",
246  ]
247}
248
249rtc_library("audio_decoder_fuzzer") {
250  testonly = true
251  sources = [
252    "audio_decoder_fuzzer.cc",
253    "audio_decoder_fuzzer.h",
254  ]
255  deps = [
256    "../../api/audio_codecs:audio_codecs_api",
257    "../../modules/rtp_rtcp:rtp_rtcp_format",
258    "../../rtc_base:checks",
259    "../../rtc_base:rtc_base_approved",
260  ]
261  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
262}
263
264webrtc_fuzzer_test("audio_decoder_ilbc_fuzzer") {
265  sources = [ "audio_decoder_ilbc_fuzzer.cc" ]
266  deps = [
267    ":audio_decoder_fuzzer",
268    "../../modules/audio_coding:ilbc",
269  ]
270}
271
272webrtc_fuzzer_test("audio_decoder_isac_fuzzer") {
273  sources = [ "audio_decoder_isac_fuzzer.cc" ]
274  deps = [
275    ":audio_decoder_fuzzer",
276    "../../modules/audio_coding:isac",
277  ]
278}
279
280webrtc_fuzzer_test("audio_decoder_isacfix_fuzzer") {
281  sources = [ "audio_decoder_isacfix_fuzzer.cc" ]
282  deps = [
283    ":audio_decoder_fuzzer",
284    "../../modules/audio_coding:isac_fix",
285  ]
286}
287
288webrtc_fuzzer_test("audio_decoder_opus_fuzzer") {
289  sources = [ "audio_decoder_opus_fuzzer.cc" ]
290  deps = [
291    ":audio_decoder_fuzzer",
292    "../../modules/audio_coding:webrtc_opus",
293  ]
294}
295
296webrtc_fuzzer_test("audio_decoder_opus_redundant_fuzzer") {
297  sources = [ "audio_decoder_opus_redundant_fuzzer.cc" ]
298  deps = [
299    ":audio_decoder_fuzzer",
300    "../../modules/audio_coding:webrtc_opus",
301  ]
302}
303
304webrtc_fuzzer_test("audio_decoder_multiopus_fuzzer") {
305  sources = [ "audio_decoder_multistream_opus_fuzzer.cc" ]
306  deps = [
307    ":audio_decoder_fuzzer",
308    "../../api/audio_codecs/opus:audio_decoder_multiopus",
309    "../../api/audio_codecs/opus:audio_decoder_opus_config",
310  ]
311}
312
313rtc_library("audio_encoder_fuzzer") {
314  testonly = true
315  sources = [
316    "audio_encoder_fuzzer.cc",
317    "audio_encoder_fuzzer.h",
318  ]
319  deps = [
320    ":fuzz_data_helper",
321    "../../api:array_view",
322    "../../api/audio_codecs:audio_codecs_api",
323    "../../rtc_base:checks",
324    "../../rtc_base:rtc_base_approved",
325  ]
326}
327
328webrtc_fuzzer_test("audio_encoder_opus_fuzzer") {
329  sources = [ "audio_encoder_opus_fuzzer.cc" ]
330  deps = [
331    ":audio_encoder_fuzzer",
332    "../../api/audio_codecs/opus:audio_encoder_opus",
333    "../../rtc_base:checks",
334  ]
335}
336
337webrtc_fuzzer_test("audio_encoder_isac_fixed_fuzzer") {
338  sources = [ "audio_encoder_isac_fixed_fuzzer.cc" ]
339  deps = [
340    ":audio_encoder_fuzzer",
341    "../../api/audio_codecs/isac:audio_encoder_isac_fix",
342    "../../rtc_base:checks",
343  ]
344}
345
346webrtc_fuzzer_test("audio_encoder_isac_float_fuzzer") {
347  sources = [ "audio_encoder_isac_float_fuzzer.cc" ]
348  deps = [
349    ":audio_encoder_fuzzer",
350    "../../api/audio_codecs/isac:audio_encoder_isac_float",
351    "../../rtc_base:checks",
352  ]
353}
354
355webrtc_fuzzer_test("turn_unwrap_fuzzer") {
356  sources = [ "turn_unwrap_fuzzer.cc" ]
357  deps = [
358    "../../media",
359    "../../media:rtc_media_base",
360  ]
361}
362
363webrtc_fuzzer_test("neteq_rtp_fuzzer") {
364  sources = [ "neteq_rtp_fuzzer.cc" ]
365  deps = [
366    "../../api:array_view",
367    "../../api/audio_codecs:builtin_audio_decoder_factory",
368    "../../modules/audio_coding:neteq",
369    "../../modules/audio_coding:neteq_test_tools",
370    "../../modules/audio_coding:neteq_tools_minimal",
371    "../../modules/audio_coding:pcm16b",
372    "../../modules/rtp_rtcp:rtp_rtcp_format",
373    "../../rtc_base:rtc_base_approved",
374  ]
375}
376
377webrtc_fuzzer_test("neteq_signal_fuzzer") {
378  sources = [ "neteq_signal_fuzzer.cc" ]
379  deps = [
380    "../../api:array_view",
381    "../../api/audio_codecs:builtin_audio_decoder_factory",
382    "../../modules/audio_coding:neteq",
383    "../../modules/audio_coding:neteq_test_tools",
384    "../../modules/audio_coding:neteq_tools_minimal",
385    "../../modules/audio_coding:pcm16b",
386    "../../rtc_base:rtc_base_approved",
387  ]
388}
389
390webrtc_fuzzer_test("residual_echo_detector_fuzzer") {
391  sources = [ "residual_echo_detector_fuzzer.cc" ]
392  deps = [
393    "../../api/audio:echo_detector_creator",
394    "../../rtc_base:checks",
395    "../../rtc_base:rtc_base_approved",
396  ]
397}
398
399webrtc_fuzzer_test("sdp_parser_fuzzer") {
400  sources = [ "sdp_parser_fuzzer.cc" ]
401  deps = [
402    "../../api:libjingle_peerconnection_api",
403    "../../pc:libjingle_peerconnection",
404  ]
405  seed_corpus = "corpora/sdp-corpus"
406}
407
408webrtc_fuzzer_test("stun_parser_fuzzer") {
409  sources = [ "stun_parser_fuzzer.cc" ]
410  deps = [
411    "../../api/transport:stun_types",
412    "../../p2p:rtc_p2p",
413  ]
414  seed_corpus = "corpora/stun-corpus"
415  dict = "corpora/stun.tokens"
416}
417
418webrtc_fuzzer_test("stun_validator_fuzzer") {
419  sources = [ "stun_validator_fuzzer.cc" ]
420  deps = [
421    "../../api/transport:stun_types",
422    "../../p2p:rtc_p2p",
423  ]
424  seed_corpus = "corpora/stun-corpus"
425  dict = "corpora/stun.tokens"
426}
427
428webrtc_fuzzer_test("mdns_parser_fuzzer") {
429  sources = [ "mdns_parser_fuzzer.cc" ]
430  deps = [
431    "../../p2p:rtc_p2p",
432    "../../rtc_base:rtc_base_approved",
433  ]
434  seed_corpus = "corpora/mdns-corpus"
435}
436
437webrtc_fuzzer_test("pseudotcp_parser_fuzzer") {
438  sources = [ "pseudotcp_parser_fuzzer.cc" ]
439  deps = [
440    "../../p2p:rtc_p2p",
441    "../../rtc_base",
442  ]
443}
444
445rtc_library("audio_processing_fuzzer_helper") {
446  testonly = true
447  sources = [
448    "audio_processing_fuzzer_helper.cc",
449    "audio_processing_fuzzer_helper.h",
450  ]
451  deps = [
452    ":fuzz_data_helper",
453    "../../api/audio:audio_frame_api",
454    "../../modules/audio_processing",
455    "../../modules/audio_processing:api",
456    "../../modules/audio_processing:audio_frame_proxies",
457    "../../rtc_base:checks",
458    "../../rtc_base:rtc_base_approved",
459  ]
460  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
461}
462
463webrtc_fuzzer_test("audio_processing_fuzzer") {
464  sources = [ "audio_processing_configs_fuzzer.cc" ]
465  deps = [
466    ":audio_processing_fuzzer_helper",
467    "../../api:scoped_refptr",
468    "../../api/audio:aec3_factory",
469    "../../api/task_queue:default_task_queue_factory",
470    "../../modules/audio_processing",
471    "../../modules/audio_processing:api",
472    "../../modules/audio_processing:audio_buffer",
473    "../../modules/audio_processing:audioproc_test_utils",
474    "../../modules/audio_processing/aec3",
475    "../../modules/audio_processing/aec_dump",
476    "../../modules/audio_processing/aec_dump:aec_dump_impl",
477    "../../rtc_base:rtc_base_approved",
478    "../../rtc_base:rtc_task_queue",
479    "../../rtc_base:safe_minmax",
480    "../../system_wrappers:field_trial",
481  ]
482  absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
483  seed_corpus = "corpora/audio_processing-corpus"
484}
485
486webrtc_fuzzer_test("agc_fuzzer") {
487  sources = [ "agc_fuzzer.cc" ]
488  deps = [
489    ":fuzz_data_helper",
490    "../../modules/audio_processing",
491    "../../modules/audio_processing:api",
492    "../../modules/audio_processing:audio_buffer",
493    "../../rtc_base:rtc_base_approved",
494    "../../rtc_base:safe_minmax",
495  ]
496
497  seed_corpus = "corpora/agc-corpus"
498}
499
500webrtc_fuzzer_test("aec3_config_json_fuzzer") {
501  sources = [ "aec3_config_json_fuzzer.cc" ]
502  deps = [
503    ":fuzz_data_helper",
504    "../../api/audio:aec3_config",
505    "../../api/audio:aec3_config_json",
506  ]
507  dict = "//testing/libfuzzer/fuzzers/dicts/json.dict"
508  seed_corpus = "corpora/aec3-config-json-corpus"
509}
510
511webrtc_fuzzer_test("aec3_fuzzer") {
512  defines = []
513  if (apm_debug_dump) {
514    defines += [ "WEBRTC_APM_DEBUG_DUMP=1" ]
515  } else {
516    defines += [ "WEBRTC_APM_DEBUG_DUMP=0" ]
517  }
518  sources = [ "aec3_fuzzer.cc" ]
519  deps = [
520    ":fuzz_data_helper",
521    "../../modules/audio_processing:api",
522    "../../modules/audio_processing:audio_buffer",
523    "../../modules/audio_processing/aec3",
524  ]
525}
526
527webrtc_fuzzer_test("comfort_noise_decoder_fuzzer") {
528  sources = [ "comfort_noise_decoder_fuzzer.cc" ]
529  deps = [
530    "../../api:array_view",
531    "../../modules/audio_coding:webrtc_cng",
532    "../../rtc_base:rtc_base_approved",
533  ]
534}
535
536webrtc_fuzzer_test("rtp_depacketizer_av1_assemble_frame_fuzzer") {
537  sources = [ "rtp_depacketizer_av1_assemble_frame_fuzzer.cc" ]
538  seed_corpus = "corpora/rtp-depacketizer-av1-assemble-frame-corpus"
539  deps = [
540    ":fuzz_data_helper",
541    "../../api:array_view",
542    "../../modules/rtp_rtcp",
543  ]
544}
545
546webrtc_fuzzer_test("rtp_dependency_descriptor_fuzzer") {
547  sources = [ "rtp_dependency_descriptor_fuzzer.cc" ]
548  seed_corpus = "corpora/dependency_descriptor-corpus"
549  deps = [
550    "../../api:array_view",
551    "../../common_video/generic_frame_descriptor",
552    "../../modules/rtp_rtcp:rtp_rtcp_format",
553    "../../rtc_base:checks",
554  ]
555}
556
557webrtc_fuzzer_test("rtp_frame_reference_finder_fuzzer") {
558  sources = [ "rtp_frame_reference_finder_fuzzer.cc" ]
559  deps = [
560    "../../api:rtp_packet_info",
561    "../../api:scoped_refptr",
562    "../../modules/video_coding/",
563    "../../system_wrappers",
564  ]
565}
566
567webrtc_fuzzer_test("frame_buffer2_fuzzer") {
568  sources = [ "frame_buffer2_fuzzer.cc" ]
569  deps = [
570    "../../modules/video_coding/",
571    "../time_controller:time_controller",
572  ]
573}
574
575webrtc_fuzzer_test("field_trial_fuzzer") {
576  sources = [ "field_trial_fuzzer.cc" ]
577  deps = [ "../../system_wrappers:field_trial" ]
578  seed_corpus = "corpora/field_trial-corpus"
579}
580
581webrtc_fuzzer_test("string_to_number_fuzzer") {
582  sources = [ "string_to_number_fuzzer.cc" ]
583  deps = [ "../../rtc_base:rtc_base_approved" ]
584  seed_corpus = "corpora/string_to_number-corpus"
585}
586
587webrtc_fuzzer_test("sctp_utils_fuzzer") {
588  sources = [ "sctp_utils_fuzzer.cc" ]
589  deps = [
590    "../../api:libjingle_peerconnection_api",
591    "../../pc:libjingle_peerconnection",
592    "../../pc:rtc_pc_base",
593    "../../rtc_base:rtc_base_approved",
594  ]
595}
596
597webrtc_fuzzer_test("rtp_header_parser_fuzzer") {
598  sources = [ "rtp_header_parser_fuzzer.cc" ]
599  deps = [ "../:rtp_test_utils" ]
600}
601
602webrtc_fuzzer_test("ssl_certificate_fuzzer") {
603  sources = [ "rtp_header_parser_fuzzer.cc" ]
604  deps = [ "../:rtp_test_utils" ]
605}
606
607webrtc_fuzzer_test("vp8_replay_fuzzer") {
608  sources = [ "vp8_replay_fuzzer.cc" ]
609  deps = [
610    "../../rtc_base:rtc_base_approved",
611    "utils:rtp_replayer",
612  ]
613  seed_corpus = "corpora/rtpdump-corpus/vp8"
614}
615
616webrtc_fuzzer_test("vp9_replay_fuzzer") {
617  sources = [ "vp9_replay_fuzzer.cc" ]
618  deps = [
619    "../../rtc_base:rtc_base_approved",
620    "utils:rtp_replayer",
621  ]
622  seed_corpus = "corpora/rtpdump-corpus/vp9"
623}
624