Skip to content

Commit 9cbcff1

Browse files
committed
send: account for zero mtu
Don't divide by zero.
1 parent 6ed56ff commit 9cbcff1

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

device/send.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -515,10 +515,18 @@ func (device *Device) RoutineEncryption() {
515515
// pad content to multiple of 16
516516

517517
mtu := int(atomic.LoadInt32(&device.tun.mtu))
518-
lastUnit := len(elem.packet) % mtu
519-
paddedSize := (lastUnit + PaddingMultiple - 1) & ^(PaddingMultiple - 1)
520-
if paddedSize > mtu {
521-
paddedSize = mtu
518+
var paddedSize int
519+
if mtu == 0 {
520+
paddedSize = (len(elem.packet) + PaddingMultiple - 1) & ^(PaddingMultiple - 1)
521+
} else {
522+
lastUnit := len(elem.packet)
523+
if lastUnit > mtu {
524+
lastUnit %= mtu
525+
}
526+
paddedSize := (lastUnit + PaddingMultiple - 1) & ^(PaddingMultiple - 1)
527+
if paddedSize > mtu {
528+
paddedSize = mtu
529+
}
522530
}
523531
for i := len(elem.packet); i < paddedSize; i++ {
524532
elem.packet = append(elem.packet, 0)

0 commit comments

Comments
 (0)