From bbc47fbbc855aa1ec5f00e4280f1627c52ef77b2 Mon Sep 17 00:00:00 2001 From: Alex Brainman Date: Wed, 22 Apr 2015 15:47:13 +1000 Subject: [PATCH] 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 --- windows/registry/value.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/windows/registry/value.go b/windows/registry/value.go index 074aa4d7..1c1771d3 100644 --- a/windows/registry/value.go +++ b/windows/registry/value.go @@ -119,15 +119,13 @@ func ExpandString(value string) (string, error) { 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 }