소스 검색

return err instead of panic when convert string to utf16

Signed-off-by: Boshi Lian <farmer1992@gmail.com>
Boshi Lian 8 년 전
부모
커밋
1c770c6d8c
1개의 변경된 파일7개의 추가작업 그리고 1개의 파일을 삭제
  1. 7 1
      daemon/logger/etwlogs/etwlogs_windows.go

+ 7 - 1
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)