summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2017-07-18 14:15:29 +0200
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2017-07-18 14:15:29 +0200
commitbd6027a4d5114df964e88e357b52883411174558 (patch)
tree617b6c4b8737d8a7834d2cfed2571016cad0d635
parentc5d7efc2467abb6cd8365c83fae68da6924c17f2 (diff)
Fixed file descriptor leak on linux
-rw-r--r--src/send.go6
-rw-r--r--src/tun_linux.go4
2 files changed, 6 insertions, 4 deletions
diff --git a/src/send.go b/src/send.go
index fdbc676..ca42934 100644
--- a/src/send.go
+++ b/src/send.go
@@ -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
diff --git a/src/tun_linux.go b/src/tun_linux.go
index d0e9761..a200bd8 100644
--- a/src/tun_linux.go
+++ b/src/tun_linux.go
@@ -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