Skip to content

Commit b2797dc

Browse files
Bryan C. Millsandybons
Bryan C. Mills
authored andcommitted
[release-branch.go1.13] cmd/go: do not append to the global cfg.OrigEnv slice
Appending to a global slice is only safe if its length is already equal to its capacity. That property is not guaranteed for slices in general, and empirically does not hold for this one. This is a minimal fix to make it easier to backport. A more robust cleanup of the base.EnvForDir function will be sent in a subsequent CL. Fixes #38082 Updates #38077 Change-Id: I731d5bbd0e516642c2cf43e713eeea15402604e5 Reviewed-on: https://go-review.googlesource.com/c/go/+/225577 Run-TryBot: Bryan C. Mills <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Jay Conrod <[email protected]> Reviewed-by: Michael Matloob <[email protected]> (cherry picked from commit bfb1342) Reviewed-on: https://go-review.googlesource.com/c/go/+/225660
1 parent d6224d3 commit b2797dc

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

src/cmd/go/internal/generate/generate.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"cmd/go/internal/cfg"
2323
"cmd/go/internal/load"
2424
"cmd/go/internal/modload"
25+
"cmd/go/internal/str"
2526
"cmd/go/internal/work"
2627
)
2728

@@ -438,7 +439,7 @@ func (g *Generator) exec(words []string) {
438439
cmd.Stderr = os.Stderr
439440
// Run the command in the package directory.
440441
cmd.Dir = g.dir
441-
cmd.Env = append(cfg.OrigEnv, g.env...)
442+
cmd.Env = str.StringList(cfg.OrigEnv, g.env)
442443
err := cmd.Run()
443444
if err != nil {
444445
g.errorf("running %q: %s", words[0], err)

src/cmd/go/internal/test/test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1142,7 +1142,7 @@ func (c *runCache) builderRunTest(b *work.Builder, a *work.Action) error {
11421142

11431143
cmd := exec.Command(args[0], args[1:]...)
11441144
cmd.Dir = a.Package.Dir
1145-
cmd.Env = base.EnvForDir(cmd.Dir, cfg.OrigEnv)
1145+
cmd.Env = base.EnvForDir(cmd.Dir, cfg.OrigEnv[:len(cfg.OrigEnv):len(cfg.OrigEnv)])
11461146
cmd.Stdout = stdout
11471147
cmd.Stderr = stdout
11481148

0 commit comments

Comments
 (0)