On Windows, syscall.StartProcess and os/exec.Cmd did not properly
check for invalid environment variable values. A malicious
environment variable value could exploit this behavior to set a
value for a different environment variable. For example, the
environment variable string "A=B\x00C=D" set the variables "A=B" and
"C=D".
Thanks to RyotaK (https://twitter.com/ryotkak) for reporting this
issue.
This is CVE-2022-41716 and Go issue https://go.dev/issue/56284.
This Go release also fixes https://github.com/golang/go/issues/56309, a
runtime bug which can cause random memory corruption when a goroutine
exits with runtime.LockOSThread() set. This fix is necessary to unblock
work to replace certain uses of pkg/reexec with unshared OS threads.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 85eee32f4c)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
67 lines
1.2 KiB
HCL
67 lines
1.2 KiB
HCL
variable "GO_VERSION" {
|
|
default = "1.19.3"
|
|
}
|
|
variable "VERSION" {
|
|
default = ""
|
|
}
|
|
|
|
variable "USE_GLIBC" {
|
|
default = ""
|
|
}
|
|
|
|
variable "STRIP_TARGET" {
|
|
default = ""
|
|
}
|
|
|
|
group "default" {
|
|
targets = ["binary"]
|
|
}
|
|
|
|
target "binary" {
|
|
target = "binary"
|
|
platforms = ["local"]
|
|
output = ["build"]
|
|
args = {
|
|
BASE_VARIANT = USE_GLIBC != "" ? "buster" : "alpine"
|
|
VERSION = VERSION
|
|
GO_STRIP = STRIP_TARGET
|
|
}
|
|
}
|
|
|
|
target "dynbinary" {
|
|
inherits = ["binary"]
|
|
args = {
|
|
GO_LINKMODE = "dynamic"
|
|
}
|
|
}
|
|
|
|
variable "GROUP_TOTAL" {
|
|
default = "1"
|
|
}
|
|
|
|
variable "GROUP_INDEX" {
|
|
default = "0"
|
|
}
|
|
|
|
function "platforms" {
|
|
params = []
|
|
result = ["linux/amd64", "linux/386", "linux/arm64", "linux/arm", "linux/ppc64le", "linux/s390x", "darwin/amd64", "darwin/arm64", "windows/amd64"]
|
|
}
|
|
|
|
function "glen" {
|
|
params = [platforms, GROUP_TOTAL]
|
|
result = ceil(length(platforms)/GROUP_TOTAL)
|
|
}
|
|
|
|
target "_all_platforms" {
|
|
platforms = slice(platforms(), GROUP_INDEX*glen(platforms(), GROUP_TOTAL),min(length(platforms()), (GROUP_INDEX+1)*glen(platforms(), GROUP_TOTAL)))
|
|
}
|
|
|
|
target "cross" {
|
|
inherits = ["binary", "_all_platforms"]
|
|
}
|
|
|
|
target "dynbinary-cross" {
|
|
inherits = ["dynbinary", "_all_platforms"]
|
|
}
|