From b3235b75d109f06eec0d3603c606b2d8373b9d4c Mon Sep 17 00:00:00 2001 From: Aman Karmani Date: Tue, 2 Mar 2021 11:52:34 -0800 Subject: encoding/gob: ensure "duplicate type received" decoder errors surface up Previously re-using a decoder with a new stream resulted in a confusing "extra data in buffer" error message. Change-Id: Ia4c4c3a2d4b63c59e37e53faa61a500d5ff6e5f1 Reviewed-on: https://go-review.googlesource.com/c/go/+/297949 Reviewed-by: Rob Pike Run-TryBot: Rob Pike TryBot-Result: Go Bot Trust: Emmanuel Odeke --- src/encoding/gob/decoder.go | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/encoding/gob/decoder.go') diff --git a/src/encoding/gob/decoder.go b/src/encoding/gob/decoder.go index b52aabe54b..7eb3093391 100644 --- a/src/encoding/gob/decoder.go +++ b/src/encoding/gob/decoder.go @@ -152,6 +152,9 @@ func (dec *Decoder) decodeTypeSequence(isInterface bool) typeId { } // Type definition for (-id) follows. dec.recvType(-id) + if dec.err != nil { + break + } // When decoding an interface, after a type there may be a // DelimitedValue still in the buffer. Skip its count. // (Alternatively, the buffer is empty and the byte count -- cgit v1.3