]> Sergey Matveev's repositories - btrtrc.git/blob - bencode/fuzz.go
bencode: Add ignore_unmarshal_type_error tag
[btrtrc.git] / bencode / fuzz.go
1 // +build gofuzz
2
3 package bencode
4
5 import (
6         "fmt"
7         "reflect"
8 )
9
10 func Fuzz(b []byte) int {
11         var d interface{}
12         err := Unmarshal(b, &d)
13         if err != nil {
14                 return 0
15         }
16         b0, err := Marshal(d)
17         if err != nil {
18                 panic(err)
19         }
20         var d0 interface{}
21         err = Unmarshal(b0, &d0)
22         if err != nil {
23                 panic(err)
24         }
25         if !reflect.DeepEqual(d, d0) {
26                 panic(fmt.Sprintf("%s != %s", d, d0))
27         }
28         return 1
29 }