windows/registry: mark string end with 0 before calling Windows ExpandEnvironmentStrings
Change-Id: I02bfcdeac44167d1dbeb15bcd5c82111fba3f527
Reviewed-on: https://go-review.googlesource.com/9234
Reviewed-by: Rob Pike <r@golang.org>
diff --git a/windows/registry/value.go b/windows/registry/value.go
index 074aa4d..1c1771d 100644
--- a/windows/registry/value.go
+++ b/windows/registry/value.go
@@ -119,15 +119,13 @@
if value == "" {
return "", nil
}
- for i := 0; i < len(value); i++ {
- if value[i] == 0 {
- return "", errors.New("string cannot have 0 inside")
- }
+ p, err := syscall.UTF16PtrFromString(value)
+ if err != nil {
+ return "", err
}
- p := utf16.Encode([]rune(value))
r := make([]uint16, 100)
for {
- n, err := expandEnvironmentStrings(&p[0], &r[0], uint32(len(r)))
+ n, err := expandEnvironmentStrings(p, &r[0], uint32(len(r)))
if err != nil {
return "", err
}