30 lines
388 B
Go
30 lines
388 B
Go
// +build gofuzz
|
|
|
|
package bencode
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
)
|
|
|
|
func Fuzz(b []byte) int {
|
|
var d interface{}
|
|
err := Unmarshal(b, &d)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
b0, err := Marshal(d)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
var d0 interface{}
|
|
err = Unmarshal(b0, &d0)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
if !reflect.DeepEqual(d, d0) {
|
|
panic(fmt.Sprintf("%s != %s", d, d0))
|
|
}
|
|
return 1
|
|
}
|