README
1This is a collection of corpora for various WebRTC fuzzers. To use
2them, the gn targets define seed_corpus=$corpus_dir, which causes the
3ClusterFuzz upload bot to bundle $corpus_dir and upload it.
4
5The format is simple: one file per test case. Specific notes are
6included below.
7
8### SDP ###
9This corpus was initially assembled manually from the following
10sources:
11
12 - 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"}'
13 - all the SDPs used in the parser unit tests
14 - some manually gathered SDPs from Firefox and Opera
15
16The SDP tokens come from:
17
18 - 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
19
20### STUN ###
21This corpus was initially assembled from the STUN unit tests, together
22with a crash that it found relatively quickly.
23
24### RT(C)P ###
25This corpus was initially assembled from the unittests. RTCP was
26minimised first.
27
28There is also rt(c?)p-corpus-with-extra-byte, in which each sample is
29prefixed by the byte 0xff. Some of the rtp fuzzers need to decide
30which header extensions to enable, and the first byte of the fuzz data
31is used for this.
32
33### PseudoTCP ###
34Very small corpus minimised from the unit tests.