]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: refuse -w with an invalid GOPATH
authorBaokun Lee <nototon@gmail.com>
Thu, 7 Nov 2019 12:23:06 +0000 (20:23 +0800)
committerBryan C. Mills <bcmills@google.com>
Fri, 8 Nov 2019 19:28:49 +0000 (19:28 +0000)
Fixes #35338

Change-Id: Ic2a3a446ef56b1e5723d6192c8aeec32ae0bbeac
Reviewed-on: https://go-review.googlesource.com/c/go/+/205779
Run-TryBot: Baokun Lee <nototon@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
src/cmd/go/internal/envcmd/env.go
src/cmd/go/testdata/script/env_write.txt

index da704777f536db394c18bd6e5e0ebe41ea24eedc..023d542d8856192a03b1d697aa17e1661f6aa369 100644 (file)
@@ -353,6 +353,13 @@ func checkEnvWrite(key, val string) error {
                default:
                        return fmt.Errorf("invalid %s value %q", key, val)
                }
+       case "GOPATH":
+               if strings.HasPrefix(val, "~") {
+                       return fmt.Errorf("GOPATH entry cannot start with shell metacharacter '~': %q", val)
+               }
+               if !filepath.IsAbs(val) && val != "" {
+                       return fmt.Errorf("GOPATH entry is relative; must be absolute path: %q", val)
+               }
        }
 
        if !utf8.ValidString(val) {
index 7dbb1d90285a1d9c678fd01dacae443bdfeacf3d..8b9c1bbf4509ff8d72db6fdd6f8a275fdfac7dc0 100644 (file)
@@ -89,3 +89,10 @@ stderr 'arguments must be KEY=VALUE: invalid argument: GOOS'
 # go env -w rejects invalid GO111MODULE values, as otherwise cmd/go would break
 ! go env -w GO111MODULE=badvalue
 stderr 'invalid GO111MODULE value "badvalue"'
+
+# go env -w rejects invalid GOPATH values
+! go env -w GOPATH=~/go
+stderr 'GOPATH entry cannot start with shell metacharacter'
+
+! go env -w GOPATH=./go
+stderr 'GOPATH entry is relative; must be absolute path'