Files
platform-external-webrtc/test/fuzzers/corpora
Sam Zackrisson 306eee3d17 APM fuzzer: fuzz more sample rates, clean up input generation
APM has historically allowed sample rates not divisible by 100, but there is also code that explicitly states that such rates are not supported.
It is unclear how well rates like 22050 are handled in practice.
This CL adds support for fuzzing more sample rates, to help find issues.

We usually preserve fuzzer data reads to avoid invalidating unresolved fuzzer-found issues, but to make the code a little more readable this CL removes the discarded reads. This renders the only currently open bug non-reproducible, crbug.com/1299393.

Bug: webrtc:9413, chromium:1299393
Change-Id: I98ac1c653627c20adc73b8edede02f1526d80d9d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/264504
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37114}
2022-06-03 13:00:43 +00:00
..
2021-04-11 18:25:08 +00:00

This is a collection of corpora for various WebRTC fuzzers. To use
them, the gn targets define seed_corpus=$corpus_dir, which causes the
ClusterFuzz upload bot to bundle $corpus_dir and upload it.

The format is simple: one file per test case. Specific notes are
included below.

### SDP ###
This corpus was initially assembled manually from the following
sources:

  - curl --silent https://www.ietf.org/rfc/rfc4317.txt | grep '^[ a-z]*=[^=]*$' | sed 's/^[[:space:]]*//' | awk -v RS='(^|\n)v=' '/./ {print "v="$0 > NR".sdp"}'
  - all the SDPs used in the parser unit tests
  - some manually gathered SDPs from Firefox and Opera

The SDP tokens come from:

 -  grep "^static const " webrtc/api/webrtcsdp.cc | cut -d'=' -f2 | cut -d ';' -f1 | tr -d '"' | tr -d "'" | tr -d ' ' | sort -u | grep -v '^(\n|\r|\r\n)$|^$' | sed -e 's/^/"/' -e 's/$/"/' | tail -n +2

### STUN ###
This corpus was initially assembled from the STUN unit tests, together
with a crash that it found relatively quickly.

### RT(C)P ###
This corpus was initially assembled from the unittests. RTCP was
minimised first.

There is also rt(c?)p-corpus-with-extra-byte, in which each sample is
prefixed by the byte 0xff. Some of the rtp fuzzers need to decide
which header extensions to enable, and the first byte of the fuzz data
is used for this.

### PseudoTCP ###
Very small corpus minimised from the unit tests.

### SCTP ###
This corpus was extracted from a few manually recorder wireshark dumps.