]> Cypherpunks repositories - gostls13.git/commitdiff
internal/syscall/windows: increase registry.ExpandString buffer
authorPatrick Mezard <patrick@mezard.eu>
Fri, 8 May 2015 12:57:30 +0000 (14:57 +0200)
committerAlex Brainman <alex.brainman@gmail.com>
Sun, 10 May 2015 02:14:29 +0000 (02:14 +0000)
ExpandString correctly loops on the syscall until it reaches the
required buffer size but truncates it before converting it back to
string. The truncation limit is increased to 2^15 bytes which is the
documented maximum ExpandEnvironmentStrings output size.

This fixes TestExpandString on systems where len($PATH) > 1024.

Change-Id: I2a6f184eeca939121b458bcffe1a436a50f3298e
Reviewed-on: https://go-review.googlesource.com/9805
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/internal/syscall/windows/registry/value.go

index 1c1771d30e40abb272bb977f9435bb7e8f260d72..b2b28aadf8ac572177113bd52104493c29d9020b 100644 (file)
@@ -130,7 +130,7 @@ func ExpandString(value string) (string, error) {
                        return "", err
                }
                if n <= uint32(len(r)) {
-                       u := (*[1 << 10]uint16)(unsafe.Pointer(&r[0]))[:]
+                       u := (*[1 << 15]uint16)(unsafe.Pointer(&r[0]))[:]
                        return syscall.UTF16ToString(u), nil
                }
                r = make([]uint16, n)