...
1
2
3
4
5
6 package jsonfuzz
7
8 import (
9 "google.golang.org/protobuf/encoding/protojson"
10 "google.golang.org/protobuf/proto"
11
12 fuzzpb "google.golang.org/protobuf/internal/testprotos/fuzz"
13 )
14
15
16 func Fuzz(data []byte) (score int) {
17 m1 := &fuzzpb.Fuzz{}
18 if err := (protojson.UnmarshalOptions{
19 AllowPartial: true,
20 }).Unmarshal(data, m1); err != nil {
21 return 0
22 }
23 data1, err := protojson.MarshalOptions{
24 AllowPartial: true,
25 }.Marshal(m1)
26 if err != nil {
27 panic(err)
28 }
29 m2 := &fuzzpb.Fuzz{}
30 if err := (protojson.UnmarshalOptions{
31 AllowPartial: true,
32 }).Unmarshal(data1, m2); err != nil {
33 return 0
34 }
35 if !proto.Equal(m1, m2) {
36 panic("not equal")
37 }
38 return 1
39 }
40
View as plain text