device: make unmarshall length checks exact

This is already enforced in receive.go, but if these unmarshallers are
to have error return values anyway, make them as explicit as possible.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld 2025-05-15 16:48:14 +02:00
parent 9e7529c3d2
commit 842888ac5c

View file

@ -116,11 +116,11 @@ type MessageCookieReply struct {
Cookie [blake2s.Size128 + poly1305.TagSize]byte Cookie [blake2s.Size128 + poly1305.TagSize]byte
} }
var errMessageTooShort = errors.New("message too short") var errMessageLengthMismatch = errors.New("message length mismatch")
func (msg *MessageInitiation) unmarshal(b []byte) error { func (msg *MessageInitiation) unmarshal(b []byte) error {
if len(b) < MessageInitiationSize { if len(b) != MessageInitiationSize {
return errMessageTooShort return errMessageLengthMismatch
} }
msg.Type = binary.LittleEndian.Uint32(b) msg.Type = binary.LittleEndian.Uint32(b)
@ -135,8 +135,8 @@ func (msg *MessageInitiation) unmarshal(b []byte) error {
} }
func (msg *MessageResponse) unmarshal(b []byte) error { func (msg *MessageResponse) unmarshal(b []byte) error {
if len(b) < MessageResponseSize { if len(b) != MessageResponseSize {
return errMessageTooShort return errMessageLengthMismatch
} }
msg.Type = binary.LittleEndian.Uint32(b) msg.Type = binary.LittleEndian.Uint32(b)
@ -151,8 +151,8 @@ func (msg *MessageResponse) unmarshal(b []byte) error {
} }
func (msg *MessageCookieReply) unmarshal(b []byte) error { func (msg *MessageCookieReply) unmarshal(b []byte) error {
if len(b) < MessageCookieReplySize { if len(b) != MessageCookieReplySize {
return errMessageTooShort return errMessageLengthMismatch
} }
msg.Type = binary.LittleEndian.Uint32(b) msg.Type = binary.LittleEndian.Uint32(b)