From db87c9f2d0cc0e695bc7686bdcd04ea075b28deb Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Fri, 27 Sep 2019 13:03:07 -0400 Subject: [PATCH] cmd/go: do not reject internal double-dots in path elements The relative path element ".." is already rejected by the checks for leading and trailing dots. Fixes #27299 Change-Id: Ia8ab543c93288cdc0615abd6d22521d44bc56d72 Reviewed-on: https://go-review.googlesource.com/c/go/+/197720 Run-TryBot: Bryan C. Mills Reviewed-by: Jay Conrod TryBot-Result: Gobot Gobot --- src/cmd/go/internal/get/path.go | 3 --- src/cmd/go/internal/module/module.go | 3 --- src/cmd/go/internal/module/module_test.go | 3 ++- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/cmd/go/internal/get/path.go b/src/cmd/go/internal/get/path.go index 67d7b8a47c..95169fa5f1 100644 --- a/src/cmd/go/internal/get/path.go +++ b/src/cmd/go/internal/get/path.go @@ -44,9 +44,6 @@ func checkPath(path string, fileName bool) error { if path[0] == '-' { return fmt.Errorf("leading dash") } - if strings.Contains(path, "..") { - return fmt.Errorf("double dot") - } if strings.Contains(path, "//") { return fmt.Errorf("double slash") } diff --git a/src/cmd/go/internal/module/module.go b/src/cmd/go/internal/module/module.go index 3d1ad27628..3b70574e23 100644 --- a/src/cmd/go/internal/module/module.go +++ b/src/cmd/go/internal/module/module.go @@ -231,9 +231,6 @@ func checkPath(path string, fileName bool) error { if path[0] == '-' { return fmt.Errorf("leading dash") } - if strings.Contains(path, "..") { - return fmt.Errorf("double dot") - } if strings.Contains(path, "//") { return fmt.Errorf("double slash") } diff --git a/src/cmd/go/internal/module/module_test.go b/src/cmd/go/internal/module/module_test.go index b9f07bf57d..2c22ee7939 100644 --- a/src/cmd/go/internal/module/module_test.go +++ b/src/cmd/go/internal/module/module_test.go @@ -80,7 +80,7 @@ var checkPathTests = []struct { {"x./z", false, false, false}, {".x/z", false, false, true}, {"-x/z", false, false, false}, - {"x..y/z", false, false, false}, + {"x..y/z", true, true, true}, {"x.y/z/../../w", false, false, false}, {"x.y//z", false, false, false}, {"x.y/z//w", false, false, false}, @@ -173,6 +173,7 @@ var checkPathTests = []struct { // When we do, we'll enable them everywhere, not just for GitHub. {"github.com/user/unicode/испытание", false, false, true}, + {".../x", false, false, false}, {"../x", false, false, false}, {"./y", false, false, false}, {"x:y", false, false, false}, -- 2.50.0