]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
send: account for zero mtu
authorJason A. Donenfeld <Jason@zx2c4.com>
Thu, 13 Feb 2020 15:20:56 +0000 (16:20 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 14 Feb 2020 17:53:55 +0000 (18:53 +0100)
Don't divide by zero.

device/send.go

index 72633be9e6117f84368f69a5241802a1268b47e0..9e29d7778c56006a5b2a8846fd9d5201ee8fc376 100644 (file)
@@ -515,10 +515,18 @@ func (device *Device) RoutineEncryption() {
                        // pad content to multiple of 16
 
                        mtu := int(atomic.LoadInt32(&device.tun.mtu))
-                       lastUnit := len(elem.packet) % mtu
-                       paddedSize := (lastUnit + PaddingMultiple - 1) & ^(PaddingMultiple - 1)
-                       if paddedSize > mtu {
-                               paddedSize = mtu
+                       var paddedSize int
+                       if mtu == 0 {
+                               paddedSize = (len(elem.packet) + PaddingMultiple - 1) & ^(PaddingMultiple - 1)
+                       } else {
+                               lastUnit := len(elem.packet)
+                               if lastUnit > mtu {
+                                       lastUnit %= 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)