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
}
var errMessageTooShort = errors.New("message too short")
var errMessageLengthMismatch = errors.New("message length mismatch")
func (msg *MessageInitiation) unmarshal(b []byte) error {
if len(b) < MessageInitiationSize {
return errMessageTooShort
if len(b) != MessageInitiationSize {
return errMessageLengthMismatch
}
msg.Type = binary.LittleEndian.Uint32(b)
@ -135,8 +135,8 @@ func (msg *MessageInitiation) unmarshal(b []byte) error {
}
func (msg *MessageResponse) unmarshal(b []byte) error {
if len(b) < MessageResponseSize {
return errMessageTooShort
if len(b) != MessageResponseSize {
return errMessageLengthMismatch
}
msg.Type = binary.LittleEndian.Uint32(b)
@ -151,8 +151,8 @@ func (msg *MessageResponse) unmarshal(b []byte) error {
}
func (msg *MessageCookieReply) unmarshal(b []byte) error {
if len(b) < MessageCookieReplySize {
return errMessageTooShort
if len(b) != MessageCookieReplySize {
return errMessageLengthMismatch
}
msg.Type = binary.LittleEndian.Uint32(b)