30 lines
623 B
Go
30 lines
623 B
Go
// Zgo:build go1.18
|
|
// +Zbuild go1.18
|
|
|
|
package fuzz
|
|
|
|
import (
|
|
"net/url"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func FuzzParseQuery(f *testing.F) {
|
|
f.Add("x=1&y=2")
|
|
f.Fuzz(func(t *testing.T, queryStr string) {
|
|
query, err := url.ParseQuery(queryStr)
|
|
if err != nil {
|
|
t.Skip()
|
|
}
|
|
querystr2 := query.Encode()
|
|
query2, err := url.ParseQuery(querystr2)
|
|
if err != nil {
|
|
t.Fatalf("ParseQuery failed to decode a valid encoded query %s: %v",
|
|
querystr2, err)
|
|
}
|
|
if !reflect.DeepEqual(query, query2) {
|
|
t.Errorf("ParseQuery gave different query after being encoded:\nbefore: %v\nafter: %v\n",
|
|
query, query2)
|
|
}
|
|
})
|
|
}
|