1package proto_decoder 2 3import ( 4 "github.com/golang/protobuf/proto" 5 "github.com/golang/protobuf/ptypes/empty" 6 "github.com/jhump/protoreflect/desc" 7 "github.com/jhump/protoreflect/desc/builder" 8 "github.com/jhump/protoreflect/dynamic" 9) 10 11func Fuzz(data []byte) int { 12 d, err := desc.LoadMessageDescriptorForMessage(&empty.Empty{}) 13 if err != nil { 14 panic(err) 15 } 16 mb, err := builder.FromMessage(d) 17 if err != nil { 18 panic(err) 19 } 20 21 msg, err := mb.Build() 22 if err != nil { 23 panic(err) 24 } 25 26 decoded := dynamic.NewMessage(msg) 27 err = proto.Unmarshal(data, decoded) 28 if err != nil { 29 return 0 30 } 31 32 return 1 33} 34