]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
device: make unmarshall length checks exact
authorJason A. Donenfeld <Jason@zx2c4.com>
Thu, 15 May 2025 14:48:14 +0000 (16:48 +0200)
committerJason A. Donenfeld <Jason@zx2c4.com>
Thu, 15 May 2025 14:48:14 +0000 (16:48 +0200)
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>
device/noise-protocol.go

index 12368ec62e68b0c4cea0a09ae5cedb35212da49c..5f713ee5ed5581fb6be1e10fd365104b8cc9b73c 100644 (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)