From 67d4bb979c55cf5495188273d795c1a657419f69 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 6 Jan 2016 18:22:57 +0300 Subject: [PATCH] Input transport data size check Signed-off-by: Sergey Matveev --- src/govpn/peer.go | 3 +++ src/govpn/peer_test.go | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/src/govpn/peer.go b/src/govpn/peer.go index a8db945..5ea245b 100644 --- a/src/govpn/peer.go +++ b/src/govpn/peer.go @@ -300,6 +300,9 @@ func (p *Peer) PktProcess(data []byte, tap io.Writer, reorderable bool) bool { if len(data) < MinPktLength { return false } + if !p.Encless && len(data) > len(p.bufR)-S20BS { + return false + } var out []byte p.BusyR.Lock() if p.Encless { diff --git a/src/govpn/peer_test.go b/src/govpn/peer_test.go index c0200e3..c391060 100644 --- a/src/govpn/peer_test.go +++ b/src/govpn/peer_test.go @@ -129,3 +129,9 @@ func BenchmarkDec(b *testing.B) { } } } + +func TestTransportBigger(t *testing.T) { + tmp := make([]byte, MTUMax*4) + Rand.Read(tmp) + peer.PktProcess(tmp, Dummy{nil}, true) +} -- 2.44.0