Files
goget/internal/metalink/fuzz_test.go
T

29 lines
731 B
Go
Raw Normal View History

//go:build linux || freebsd
// +build linux freebsd
package metalink
import (
"bytes"
"testing"
)
// FuzzMetalinkParse tests metalink XML parsing with fuzzed input.
func FuzzMetalinkParse(f *testing.F) {
f.Add([]byte(`<?xml version="1.0"?>
<metalink xmlns="urn:ietf:params:xml:ns:metalink">
<file name="test.txt">
<url>https://example.com/test.txt</url>
</file>
</metalink>`))
f.Add([]byte(``))
f.Add([]byte(`<not metalink>`))
f.Add([]byte(`<?xml version="1.0"?>`))
f.Add([]byte(`<?xml version="1.0"?><metalink xmlns="urn:ietf:params:xml:ns:metalink"><file name=""><url></url></file></metalink>`))
f.Fuzz(func(t *testing.T, data []byte) {
// Parse must never panic
_, _ = Parse(bytes.NewReader(data))
})
}