From 388e65231590b9aed6c1a952cbb8a03c3c1ad587 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sun, 26 Aug 2018 21:11:39 -0600 Subject: wireguard-go-bridge: free C strings Reported-by: Anders Bergh Signed-off-by: Jason A. Donenfeld --- .../src/git.zx2c4.com/wireguard-go/api-ios.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'wireguard-go-bridge') diff --git a/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/api-ios.go b/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/api-ios.go index 0caab3e..77f398e 100644 --- a/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/api-ios.go +++ b/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/api-ios.go @@ -28,6 +28,7 @@ import ( ) var loggerFunc unsafe.Pointer +var versionString *C.char type CLogger struct { level C.int @@ -38,13 +39,18 @@ func (l *CLogger) Write(p []byte) (int, error) { if uintptr(loggerFunc) == 0 { return 0, errors.New("No logger initialized") } - C.callLogger(loggerFunc, l.level, C.CString("WireGuard/GoBackend/"+l.interfaceName), C.CString(string(p))) + tag := C.CString("WireGuard/GoBackend/"+l.interfaceName) + message := C.CString(string(p)) + C.callLogger(loggerFunc, l.level, tag, message) + C.free(unsafe.Pointer(tag)) + C.free(unsafe.Pointer(message)) return len(p), nil } var tunnelHandles map[int32]*Device func init() { + versionString = C.CString(WireGuardGoVersion) roamingDisabled = true tunnelHandles = make(map[int32]*Device) signals := make(chan os.Signal) @@ -57,7 +63,9 @@ func init() { n := runtime.Stack(buf, true) buf[n] = 0 if uintptr(loggerFunc) != 0 { - C.callLogger(loggerFunc, 0, C.CString("WireGuard/GoBackend/Stacktrace"), (*_Ctype_char)(unsafe.Pointer(&buf[0]))) + tag := C.CString("WireGuard/GoBackend/Stacktrace") + C.callLogger(loggerFunc, 0, tag, (*_Ctype_char)(unsafe.Pointer(&buf[0]))) + C.free(unsafe.Pointer(tag)) } } } @@ -122,7 +130,7 @@ func wgTurnOff(tunnelHandle int32) { //export wgVersion func wgVersion() *C.char { - return C.CString(WireGuardGoVersion) + return versionString } func main() {} -- cgit v1.2.3-59-g8ed1b