return err instead of panic when convert string to utf16
@@ -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)
