12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- //go:build gofuzz
- // +build gofuzz
- package rtcp
- import (
- "bytes"
- "io"
- )
- // Fuzz implements a randomized fuzz test of the rtcp
- // parser using go-fuzz.
- //
- // To run the fuzzer, first download go-fuzz:
- // `go get github.com/dvyukov/go-fuzz/...`
- //
- // Then build the testing package:
- // `go-fuzz-build github.com/pion/webrtc`
- //
- // And run the fuzzer on the corpus:
- // ```
- // mkdir workdir
- //
- // # optionally add a starter corpus of valid rtcp packets.
- // # the corpus should be as compact and diverse as possible.
- // cp -r ~/my-rtcp-packets workdir/corpus
- //
- // go-fuzz -bin=ase-fuzz.zip -workdir=workdir
- // ````
- func Fuzz(data []byte) int {
- r := NewReader(bytes.NewReader(data))
- for {
- _, data, err := r.ReadPacket()
- if err == io.EOF {
- break
- }
- if err != nil {
- return 0
- }
- packet, err := Unmarshal(data)
- if err != nil {
- return 0
- }
- if _, err := packet.Marshal(); err != nil {
- return 0
- }
- }
- return 1
- }
|