From 942abf948a9121a4595f782093ca623534997776 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sun, 16 Sep 2018 23:42:31 +0200 Subject: send: more precise padding calculation --- send.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/send.go b/send.go index 3b6cfa3..bc0f5e4 100644 --- a/send.go +++ b/send.go @@ -488,11 +488,13 @@ func (device *Device) RoutineEncryption() { // pad content to multiple of 16 mtu := int(atomic.LoadInt32(&device.tun.mtu)) - rem := len(elem.packet) % PaddingMultiple - if rem > 0 { - for i := 0; i < PaddingMultiple-rem && len(elem.packet) < mtu; i++ { - elem.packet = append(elem.packet, 0) - } + lastUnit := len(elem.packet) % mtu + paddedSize := (lastUnit + PaddingMultiple - 1) & ^(PaddingMultiple - 1) + if paddedSize > mtu { + paddedSize = mtu + } + for i := len(elem.packet); i < paddedSize; i++ { + elem.packet = append(elem.packet, 0) } // encrypt content and release to consumer -- cgit v1.2.3