29 lines
731 B
Go
29 lines
731 B
Go
//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))
|
||
|
|
})
|
||
|
|
}
|