From 6d2604c368bf8c11c9d13516615d06735f47da00 Mon Sep 17 00:00:00 2001 From: Boshi Lian Date: Fri, 13 Jan 2017 23:54:19 +0800 Subject: [PATCH] return err instead of panic when convert string to utf16 Signed-off-by: Boshi Lian Upstream-commit: 1c770c6d8c531bf237252eb23e183cad26b7f64a Component: engine --- .../engine/daemon/logger/etwlogs/etwlogs_windows.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/components/engine/daemon/logger/etwlogs/etwlogs_windows.go b/components/engine/daemon/logger/etwlogs/etwlogs_windows.go index 0933874525..820b481a38 100644 --- a/components/engine/daemon/logger/etwlogs/etwlogs_windows.go +++ b/components/engine/daemon/logger/etwlogs/etwlogs_windows.go @@ -146,7 +146,13 @@ func callEventRegister() error { } func callEventWriteString(message string) error { - ret, _, _ := procEventWriteString.Call(uintptr(providerHandle), 0, 0, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(message)))) + utf16message, err := syscall.UTF16FromString(message) + + if err != nil { + return err + } + + ret, _, _ := procEventWriteString.Call(uintptr(providerHandle), 0, 0, uintptr(unsafe.Pointer(&utf16message[0]))) if ret != win32CallSuccess { errorMessage := fmt.Sprintf("ETWLogs provider failed to log message. Error: %d", ret) logrus.Error(errorMessage)