Closed
Description
The following program crashes with the following message:
package main
import (
"bytes"
"fmt"
pb "github.com/dvyukov/go-fuzz/examples/protobuf/pb"
"github.com/golang/protobuf/proto"
)
func main() {
data := []byte("\n\x010")
v := new(pb.M25)
err := proto.Unmarshal(data, v)
if err != nil {
panic(err)
}
var buf bytes.Buffer
err = proto.MarshalText(&buf, v)
if err != nil {
panic(err)
}
v2 := new(pb.M25)
err = proto.UnmarshalText(buf.String(), v2)
if err != nil {
fmt.Printf("failed to UnmarshalText: %q\n", buf.Bytes())
panic(err)
}
}
failed to UnmarshalText: "/* 3 unknown bytes */\n1: \"0\"\n"
panic: line 1.0: unexpected byte 0x2f
MarshalText should not produce text that is unparsable by UnmarshalText.
Either MarshalText should write unknown bytes differently, or UnmarshalText accept the current output of MarshalText.
on commit 34a5f24
Metadata
Metadata
Assignees
Labels
No labels