From: Sergey Matveev Date: Wed, 6 Jan 2016 15:22:57 +0000 (+0300) Subject: Input transport data size check X-Git-Tag: 5.0^2~4 X-Git-Url: http://www.git.cypherpunks.ru/?a=commitdiff_plain;h=67d4bb979c55cf5495188273d795c1a657419f69;p=govpn.git Input transport data size check Signed-off-by: Sergey Matveev --- 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) +}