mirror of
https://github.com/golang/go.git
synced 2024-09-21 10:28:27 +00:00
cmd/mod/edit: disallow relative tool paths
Allowing relative paths in `go.mod` introduced an inconsistency as we do not allow relative package paths anywhere else. For golang/go#48429 Change-Id: I5ef88aec4fe35f7e94a0cf6288e94099f3ca7a0e Reviewed-on: https://go-review.googlesource.com/c/go/+/614555 Reviewed-by: Sam Thanawalla <samthanawalla@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
402dc98759
commit
097b7162ad
@ -339,25 +339,6 @@ func parsePath(flag, arg string) (path string) {
|
|||||||
return path
|
return path
|
||||||
}
|
}
|
||||||
|
|
||||||
// parsePath parses -flag=arg expecting arg to be path to a tool (allows ./)
|
|
||||||
func parseToolPath(flag, arg string) (path string) {
|
|
||||||
if strings.Contains(arg, "@") {
|
|
||||||
base.Fatalf("go: -%s=%s: need just path, not path@version", flag, arg)
|
|
||||||
}
|
|
||||||
if arg == "." {
|
|
||||||
return arg
|
|
||||||
}
|
|
||||||
toCheck := arg
|
|
||||||
if strings.HasPrefix(arg, "./") {
|
|
||||||
toCheck = arg[2:]
|
|
||||||
}
|
|
||||||
if err := module.CheckImportPath(toCheck); err != nil {
|
|
||||||
base.Fatalf("go: -%s=%s: invalid path: %v", flag, arg, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return arg
|
|
||||||
}
|
|
||||||
|
|
||||||
// parsePathVersionOptional parses path[@version], using adj to
|
// parsePathVersionOptional parses path[@version], using adj to
|
||||||
// describe any errors.
|
// describe any errors.
|
||||||
func parsePathVersionOptional(adj, arg string, allowDirPath bool) (path, version string, err error) {
|
func parsePathVersionOptional(adj, arg string, allowDirPath bool) (path, version string, err error) {
|
||||||
@ -547,7 +528,7 @@ func flagDropRetract(arg string) {
|
|||||||
|
|
||||||
// flagTool implements the -tool flag.
|
// flagTool implements the -tool flag.
|
||||||
func flagTool(arg string) {
|
func flagTool(arg string) {
|
||||||
path := parseToolPath("tool", arg)
|
path := parsePath("tool", arg)
|
||||||
edits = append(edits, func(f *modfile.File) {
|
edits = append(edits, func(f *modfile.File) {
|
||||||
if err := f.AddTool(path); err != nil {
|
if err := f.AddTool(path); err != nil {
|
||||||
base.Fatalf("go: -tool=%s: %v", arg, err)
|
base.Fatalf("go: -tool=%s: %v", arg, err)
|
||||||
@ -557,7 +538,7 @@ func flagTool(arg string) {
|
|||||||
|
|
||||||
// flagDropTool implements the -droptool flag.
|
// flagDropTool implements the -droptool flag.
|
||||||
func flagDropTool(arg string) {
|
func flagDropTool(arg string) {
|
||||||
path := parseToolPath("droptool", arg)
|
path := parsePath("droptool", arg)
|
||||||
edits = append(edits, func(f *modfile.File) {
|
edits = append(edits, func(f *modfile.File) {
|
||||||
if err := f.DropTool(path); err != nil {
|
if err := f.DropTool(path); err != nil {
|
||||||
base.Fatalf("go: -droptool=%s: %v", arg, err)
|
base.Fatalf("go: -droptool=%s: %v", arg, err)
|
||||||
|
13
src/cmd/go/testdata/script/mod_edit.txt
vendored
13
src/cmd/go/testdata/script/mod_edit.txt
vendored
@ -102,10 +102,6 @@ cd $WORK/h
|
|||||||
cp go.mod.start go.mod
|
cp go.mod.start go.mod
|
||||||
go mod edit -tool example.com/tool
|
go mod edit -tool example.com/tool
|
||||||
cmpenv go.mod go.mod.edit
|
cmpenv go.mod go.mod.edit
|
||||||
go mod edit -tool ./local
|
|
||||||
cmpenv go.mod go.mod.edit2
|
|
||||||
go mod edit -droptool ./local
|
|
||||||
cmpenv go.mod go.mod.edit
|
|
||||||
go mod edit -droptool example.com/tool2
|
go mod edit -droptool example.com/tool2
|
||||||
cmpenv go.mod go.mod.edit
|
cmpenv go.mod go.mod.edit
|
||||||
go mod edit -droptool example.com/tool
|
go mod edit -droptool example.com/tool
|
||||||
@ -386,12 +382,3 @@ module g
|
|||||||
go 1.24
|
go 1.24
|
||||||
|
|
||||||
tool example.com/tool
|
tool example.com/tool
|
||||||
-- $WORK/h/go.mod.edit2 --
|
|
||||||
module g
|
|
||||||
|
|
||||||
go 1.24
|
|
||||||
|
|
||||||
tool (
|
|
||||||
./local
|
|
||||||
example.com/tool
|
|
||||||
)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user