]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
Fixed file descriptor leak on linux
authorMathias Hall-Andersen <mathias@hall-andersen.dk>
Tue, 18 Jul 2017 12:15:29 +0000 (14:15 +0200)
committerMathias Hall-Andersen <mathias@hall-andersen.dk>
Tue, 18 Jul 2017 12:15:29 +0000 (14:15 +0200)
src/send.go
src/tun_linux.go

index fdbc6760edcf2cfd40b0a6a7a8f183a18b0a4029..ca42934556a7503507561c923078e803bfe7e092 100644 (file)
@@ -313,17 +313,15 @@ func (device *Device) RoutineEncryption() {
                        elem.packet = append(elem.packet, 0)
                }
 
-               // encrypt content
+               // encrypt content (append to header)
 
                binary.LittleEndian.PutUint64(nonce[4:], elem.nonce)
                elem.packet = elem.keyPair.send.Seal(
-                       elem.packet[:0],
+                       header,
                        nonce[:],
                        elem.packet,
                        nil,
                )
-               length := MessageTransportHeaderSize + len(elem.packet)
-               elem.packet = elem.buffer[:length]
                elem.mutex.Unlock()
 
                // refresh key if necessary
index d0e9761f358f31e67156f14274bc04b1c07f0485..a200bd8ca296f34c7392423471296eb85aa50c80 100644 (file)
@@ -37,6 +37,8 @@ func (tun *NativeTun) setMTU(n int) error {
                return err
        }
 
+       defer syscall.Close(fd)
+
        // do ioctl call
 
        var ifr [64]byte
@@ -70,6 +72,8 @@ func (tun *NativeTun) MTU() (int, error) {
                return 0, err
        }
 
+       defer syscall.Close(fd)
+
        // do ioctl call
 
        var ifr [64]byte