diff --git a/internal/protocol/protocol.go b/internal/protocol/protocol.go index e65d5e72..a5525679 100644 --- a/internal/protocol/protocol.go +++ b/internal/protocol/protocol.go @@ -356,6 +356,11 @@ func (c *rawConnection) readMessage() (hdr header, msg encodable, err error) { l.Debugf("read header %v (msglen=%d)", hdr, msglen) } + if hdr.version != 0 { + err = fmt.Errorf("unknown protocol version 0x%x", hdr.version) + return + } + if cap(c.rdbuf0) < msglen { c.rdbuf0 = make([]byte, msglen) } else { diff --git a/internal/protocol/protocol_test.go b/internal/protocol/protocol_test.go index 9da9422c..75e0086e 100644 --- a/internal/protocol/protocol_test.go +++ b/internal/protocol/protocol_test.go @@ -189,7 +189,7 @@ func TestVersionErr(t *testing.T) { msgID: 0, msgType: 0, })) - w.WriteUint32(0) + w.WriteUint32(0) // Avoids reader closing due to EOF if !m1.isClosed() { t.Error("Connection should close due to unknown version") @@ -212,7 +212,7 @@ func TestTypeErr(t *testing.T) { msgID: 0, msgType: 42, })) - w.WriteUint32(0) + w.WriteUint32(0) // Avoids reader closing due to EOF if !m1.isClosed() { t.Error("Connection should close due to unknown message type")