From 286ce206f0d67025739358cd682092bcaae2e586 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Mon, 12 Jun 2023 09:10:47 +1000 Subject: [PATCH] [v3 windows] Prevent crash when nulls in strings --- v3/pkg/w32/window.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/v3/pkg/w32/window.go b/v3/pkg/w32/window.go index 84fcda9ec..f33ae3acb 100644 --- a/v3/pkg/w32/window.go +++ b/v3/pkg/w32/window.go @@ -7,6 +7,7 @@ import ( "github.com/samber/lo" "log" "strconv" + "strings" "sync" "syscall" "unsafe" @@ -121,7 +122,18 @@ func showWindow(hwnd uintptr, cmdshow int) bool { return ret != 0 } +func stripNulls(str string) string { + // Split the string into substrings at each null character + substrings := strings.Split(str, "\x00") + + // Join the substrings back into a single string + strippedStr := strings.Join(substrings, "") + + return strippedStr +} + func MustStringToUTF16Ptr(input string) *uint16 { + input = stripNulls(input) result, err := syscall.UTF16PtrFromString(input) if err != nil { Fatal(err.Error()) @@ -130,11 +142,13 @@ func MustStringToUTF16Ptr(input string) *uint16 { } func MustStringToUTF16uintptr(input string) uintptr { + input = stripNulls(input) ret := lo.Must(syscall.UTF16PtrFromString(input)) return uintptr(unsafe.Pointer(ret)) } func MustStringToUTF16(input string) []uint16 { + input = stripNulls(input) return lo.Must(syscall.UTF16FromString(input)) }