]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.14-security] cmd/go: overwrite program name with full path
authorRoland Shoemaker <roland@golang.org>
Tue, 19 Jan 2021 17:59:24 +0000 (09:59 -0800)
committerRoland Shoemaker <bracewell@google.com>
Tue, 19 Jan 2021 18:35:10 +0000 (18:35 +0000)
If the program path is resolved, replace the first argument of the
exec.Cmd, which is the bare program name with the resolved path.

Change-Id: I92cf5e6f4bb7c8fef9b59f5eab963f4e75b90d07
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/957908
Reviewed-by: Katie Hockman <katiehockman@google.com>
Reviewed-by: Russ Cox <rsc@google.com>
Reviewed-by: Jay Conrod <jayconrod@google.com>
(cherry picked from commit a863cb56b33a24aad88f23f1d48629dc4b4b9539)
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/958253
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/cmd/go/internal/work/exec.go

index d5c75062470effa6cef5e27199e3ba60ead7aa5a..8230d85938ae486c802713384d75e8c0dbf63a0c 100644 (file)
@@ -1918,6 +1918,9 @@ func (b *Builder) runOut(a *Action, dir string, env []string, cmdargs ...interfa
 
        var buf bytes.Buffer
        cmd := exec.Command(cmdline[0], cmdline[1:]...)
+       if cmd.Path != "" {
+               cmd.Args[0] = cmd.Path
+       }
        cmd.Stdout = &buf
        cmd.Stderr = &buf
        cleanup := passLongArgsInResponseFiles(cmd)