]> Cypherpunks repositories - gostls13.git/commit
internal/syscall/windows/registry: allow for non-null terminated strings
authorJason A. Donenfeld <Jason@zx2c4.com>
Wed, 23 Oct 2019 20:27:29 +0000 (22:27 +0200)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 25 Oct 2019 09:01:11 +0000 (09:01 +0000)
commit3c25e5ec38bdee9fd1e21e2d328f2802b2e86275
tree22d55530ce7595f6c40c4167c6ee0d1eb10e2202
parent4f70c151db6a2f169058a193232263733aa3947e
internal/syscall/windows/registry: allow for non-null terminated strings

According to MSDN, "If the data has the REG_SZ, REG_MULTI_SZ or
REG_EXPAND_SZ type, this size includes any terminating null character or
characters unless the data was stored without them. [...] If the data
has the REG_SZ, REG_MULTI_SZ or REG_EXPAND_SZ type, the string may not
have been stored with the proper terminating null characters. Therefore,
even if the function returns ERROR_SUCCESS, the application should
ensure that the string is properly terminated before using it;
otherwise, it may overwrite a buffer."

It's therefore dangerous to pass it off unbounded as we do, and in fact
this led to crashes on real systems.

Change-Id: I6d786211814656f036b87fd78631466634cd764a
Reviewed-on: https://go-review.googlesource.com/c/go/+/202937
Run-TryBot: Jason A. Donenfeld <Jason@zx2c4.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
src/internal/syscall/windows/registry/value.go