]> Sergey Matveev's repositories - btrtrc.git/commitdiff
bencode: Fuzz
authorMatt Joiner <anacrolix@gmail.com>
Sun, 23 Aug 2015 05:59:49 +0000 (15:59 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Sun, 23 Aug 2015 05:59:49 +0000 (15:59 +1000)
bencode/fuzz.go [new file with mode: 0644]

diff --git a/bencode/fuzz.go b/bencode/fuzz.go
new file mode 100644 (file)
index 0000000..d075b13
--- /dev/null
@@ -0,0 +1,29 @@
+// +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
+}