Skip to content

Commit 7201f64

Browse files
authored
Merge pull request #1306 from CortexFoundation/dev
p2p/discover/v5wire: reject packets smaller than 63 bytes
2 parents 2cdfcb2 + 973614a commit 7201f64

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

p2p/discover/v5wire/encoding.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ const (
9090
minVersion = 1
9191
sizeofMaskingIV = 16
9292

93+
// The minimum size of any Discovery v5 packet is 63 bytes.
94+
// Should reject packets smaller than minPacketSize.
95+
minPacketSize = 63
96+
9397
minMessageSize = 48 // this refers to data after static headers
9498
randomPacketMsgSize = 20
9599
)
@@ -415,10 +419,10 @@ func (c *Codec) encryptMessage(s *session, p Packet, head *Header, headerData []
415419

416420
// Decode decodes a discovery packet.
417421
func (c *Codec) Decode(input []byte, addr string) (src enode.ID, n *enode.Node, p Packet, err error) {
418-
// Unmask the static header.
419-
if len(input) < sizeofStaticPacketData {
422+
if len(input) < minPacketSize {
420423
return enode.ID{}, nil, nil, errTooShort
421424
}
425+
// Unmask the static header.
422426
var head Header
423427
copy(head.IV[:], input[:sizeofMaskingIV])
424428
mask := head.mask(c.localnode.ID())

p2p/discover/v5wire/encoding_test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,15 @@ func TestDecodeErrorsV5(t *testing.T) {
274274
net := newHandshakeTest()
275275
defer net.close()
276276

277-
net.nodeA.expectDecodeErr(t, errTooShort, []byte{})
277+
b := make([]byte, 0)
278+
net.nodeA.expectDecodeErr(t, errTooShort, b)
279+
280+
b = make([]byte, 62)
281+
net.nodeA.expectDecodeErr(t, errTooShort, b)
282+
283+
b = make([]byte, 63)
284+
net.nodeA.expectDecodeErr(t, errInvalidHeader, b)
285+
278286
// TODO some more tests would be nice :)
279287
// - check invalid authdata sizes
280288
// - check invalid handshake data sizes

0 commit comments

Comments
 (0)