Files
VerseVDI-Data-Plane/gateway/apollo_parser_fuzz_test.go
T

37 lines
1.1 KiB
Go

package gateway
import (
"net"
"testing"
"time"
)
func FuzzApolloENetAndRTSPParsersStayBounded(f *testing.F) {
server, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP("127.0.0.1")})
if err != nil {
f.Fatal(err)
}
defer server.Close()
client, err := net.DialUDP("udp", nil, server.LocalAddr().(*net.UDPAddr))
if err != nil {
f.Fatal(err)
}
defer client.Close()
f.Add([]byte{0x80, 0x01, 0, 0, apolloENetPing | apolloENetAcknowledged, 0, 0, 1})
f.Add([]byte("RTSP/1.0 200 OK\r\nCSeq: 1\r\n\r\n"))
f.Fuzz(func(t *testing.T, data []byte) {
if len(data) > apolloENetMaximumPacket+1 {
data = data[:apolloENetMaximumPacket+1]
}
peer := &apolloENetPeer{
conn: client, now: time.Now, state: apolloENetConnected, peerID: 1, inboundSession: 0,
pending: make(map[apolloENetPendingKey]*apolloENetPending), rtt: time.Millisecond, variance: time.Millisecond,
}
_ = peer.handleDatagram(data)
_, _ = parseApolloRTSPMessage(data)
_, _ = ParseRTSPResponse(data)
_ = validateApolloDescribe(apolloRTSPMessage{headers: map[string]string{"content-type": "application/sdp"}, body: data})
_, _ = parseApolloRTP(data)
})
}