// +build gofuzz package stun import ( "testing" "os" "path/filepath" "strings" ) func TestMessageType_FuzzerCrash1(t *testing.T) { input := []byte("\x9c\xbe\x03") FuzzType(input) } func TestMessageCrash2(t *testing.T) { input := []byte("00\x00\x000000000000000000") FuzzMessage(input) } func corpus(t *testing.T, function, typ string) [][]byte { var data [][]byte p := filepath.Join("examples", function, typ) f, err := os.Open(p) if err != nil { t.Fatal(err) } list, err := f.Readdir(-1) if err != nil { t.Fatal(err) } for _, d := range list { if strings.Contains(d.Name(), ".") { // Skipping non-raw files. continue } df, err := os.Open(filepath.Join(p, d.Name())) if err != nil { t.Fatal(err) } buf := make([]byte, 5000) n, _ := df.Read(buf) data = append(data, buf[:n]) df.Close() } return data } func TestFuzzMessage_Coverage(t *testing.T) { for _, buf := range corpus(t, "stun-msg", "corpus") { FuzzMessage(buf) } } func TestFuzzMessage_Crashers(t *testing.T) { for _, buf := range corpus(t, "stun-msg", "crashers") { FuzzMessage(buf) } } func TestFuzzType_Coverage(t *testing.T) { for _, buf := range corpus(t, "stun-typ", "corpus") { FuzzType(buf) } } func TestFuzzType_Crashers(t *testing.T) { for _, buf := range corpus(t, "stun-typ", "crashers") { FuzzType(buf) } }