Skip to content

Commit bfb1342

Browse files
author
Bryan C. Mills
committed
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 #38077 Updates #37940 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]>
1 parent 918d4d4 commit bfb1342

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
@@ -1157,7 +1157,7 @@ func (c *runCache) builderRunTest(b *work.Builder, a *work.Action) error {
11571157

11581158
cmd := exec.Command(args[0], args[1:]...)
11591159
cmd.Dir = a.Package.Dir
1160-
cmd.Env = base.EnvForDir(cmd.Dir, cfg.OrigEnv)
1160+
cmd.Env = base.EnvForDir(cmd.Dir, cfg.OrigEnv[:len(cfg.OrigEnv):len(cfg.OrigEnv)])
11611161
cmd.Stdout = stdout
11621162
cmd.Stderr = stdout
11631163

0 commit comments

Comments
 (0)