From 08fd49fe60e2855fa85707099a6cf96ad5d4c172 Mon Sep 17 00:00:00 2001 From: Damian Gryski Date: Tue, 22 Feb 2022 11:07:05 -0800 Subject: [PATCH] src/os: make Environ() return a copy of the environment Fixes #2646 --- src/os/env.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/os/env.go b/src/os/env.go index 330297b3..9f574b53 100644 --- a/src/os/env.go +++ b/src/os/env.go @@ -8,6 +8,7 @@ package os import ( "internal/testlog" + "strings" "syscall" ) @@ -137,5 +138,13 @@ func Clearenv() { // Environ returns a copy of strings representing the environment, // in the form "key=value". func Environ() []string { - return syscall.Environ() + orig := syscall.Environ() + single := strings.Join(orig, "") + env := make([]string, len(orig)) + for i, v := range orig { + s := single[:len(v)] + env[i] = s + single = single[len(v):] + } + return env }