mirror of
https://github.com/gortc/stun.git
synced 2024-05-03 14:44:55 +08:00
97 lines
1.8 KiB
Go
97 lines
1.8 KiB
Go
// +build gofuzz
|
|
|
|
package stun
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
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("fuzz", function, typ)
|
|
f, err := os.Open(p)
|
|
if err != nil {
|
|
if os.IsNotExist(err) {
|
|
t.Skip("does not exist")
|
|
}
|
|
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)
|
|
}
|
|
}
|
|
|
|
func TestAttrPick(t *testing.T) {
|
|
attributes := attrs{
|
|
{new(XORMappedAddress), AttrXORMappedAddress},
|
|
}
|
|
for i := byte(0); i < 255; i++ {
|
|
attributes.pick(i)
|
|
}
|
|
}
|
|
|
|
func TestFuzzSetters_Crashers(t *testing.T) {
|
|
for _, buf := range corpus(t, "stun-setters", "crashers") {
|
|
FuzzSetters(buf)
|
|
}
|
|
}
|
|
|
|
func TestFuzzSetters_Coverage(t *testing.T) {
|
|
for _, buf := range corpus(t, "stun-setters", "corpus") {
|
|
FuzzSetters(buf)
|
|
}
|
|
}
|