aboutsummaryrefslogtreecommitdiff
path: root/src/path
diff options
context:
space:
mode:
authorDamien Neil <dneil@google.com>2022-11-08 14:21:30 -0800
committerDamien Neil <dneil@google.com>2022-11-09 22:06:26 +0000
commit739618945ef271793d608b587694ca1df353951d (patch)
tree21d7e0bbe39635a1142941fad678ca75abe8385c /src/path
parent61c57575cd01940d06a327ce61b8923bf4a7553a (diff)
downloadgo-739618945ef271793d608b587694ca1df353951d.tar.gz
go-739618945ef271793d608b587694ca1df353951d.zip
Revert "path/filepath: change IsAbs("NUL") to return true"
This reverts commit d154ef60a0c88be98c70bbe1c5735fb7b1f45250. This change made IsAbs return true for certain reserved filenames, but does not consistently detect reserved names. For example, "./COM1", "//./COM1", and (on some Windows versions) "COM1.txt" all refer to the COM1 device, but IsAbs detects none of them. Since NUL is not an absolute path, do not attempt to detect it or other device paths in IsAbs. See #56217 for more discussion of IsAbs and device paths. For #56217. Change-Id: If4bf81c7e1a2e8842206c7c5268555102140dae8 Reviewed-on: https://go-review.googlesource.com/c/go/+/448898 Reviewed-by: Michael Knyszek <mknyszek@google.com> Run-TryBot: Damien Neil <dneil@google.com> Reviewed-by: Quim Muntal <quimmuntal@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'src/path')
-rw-r--r--src/path/filepath/path_test.go5
-rw-r--r--src/path/filepath/path_windows.go18
2 files changed, 0 insertions, 23 deletions
diff --git a/src/path/filepath/path_test.go b/src/path/filepath/path_test.go
index 473a89b9c5..382381eb4e 100644
--- a/src/path/filepath/path_test.go
+++ b/src/path/filepath/path_test.go
@@ -897,11 +897,6 @@ func TestIsAbs(t *testing.T) {
for _, test := range isabstests {
tests = append(tests, IsAbsTest{"c:" + test.path, test.isAbs})
}
- // Test reserved names.
- tests = append(tests, IsAbsTest{os.DevNull, true})
- tests = append(tests, IsAbsTest{"NUL", true})
- tests = append(tests, IsAbsTest{"nul", true})
- tests = append(tests, IsAbsTest{"CON", true})
} else {
tests = isabstests
}
diff --git a/src/path/filepath/path_windows.go b/src/path/filepath/path_windows.go
index 1ca59190d5..c754301bf4 100644
--- a/src/path/filepath/path_windows.go
+++ b/src/path/filepath/path_windows.go
@@ -20,26 +20,8 @@ func toUpper(c byte) byte {
return c
}
-// isReservedName returns true if path is a Windows reserved name.
-func isReservedName(path string) bool {
- // For details, search for PRN in
- // https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file.
- if 3 <= len(path) && len(path) <= 4 {
- switch string([]byte{toUpper(path[0]), toUpper(path[1]), toUpper(path[2])}) {
- case "CON", "PRN", "AUX", "NUL":
- return len(path) == 3
- case "COM", "LPT":
- return len(path) == 4 && '1' <= path[3] && path[3] <= '9'
- }
- }
- return false
-}
-
// IsAbs reports whether the path is absolute.
func IsAbs(path string) (b bool) {
- if isReservedName(path) {
- return true
- }
l := volumeNameLen(path)
if l == 0 {
return false