mirror of
https://github.com/golang/go.git
synced 2025-05-18 13:54:40 +00:00
io/fs: set ErrInvalid for FS.Open from SubFS when it fails ValidPath
Fixes #65419 Change-Id: I8f9f82ab0387d8bb39aaca4f9e60e36ee15c587d Reviewed-on: https://go-review.googlesource.com/c/go/+/560137 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com>
This commit is contained in:
parent
a18789041c
commit
bf821f65cf
@ -33,7 +33,7 @@ type SubFS interface {
|
||||
// chroot-style security mechanism, and Sub does not change that fact.
|
||||
func Sub(fsys FS, dir string) (FS, error) {
|
||||
if !ValidPath(dir) {
|
||||
return nil, &PathError{Op: "sub", Path: dir, Err: errors.New("invalid name")}
|
||||
return nil, &PathError{Op: "sub", Path: dir, Err: ErrInvalid}
|
||||
}
|
||||
if dir == "." {
|
||||
return fsys, nil
|
||||
@ -52,7 +52,7 @@ type subFS struct {
|
||||
// fullName maps name to the fully-qualified name dir/name.
|
||||
func (f *subFS) fullName(op string, name string) (string, error) {
|
||||
if !ValidPath(name) {
|
||||
return "", &PathError{Op: op, Path: name, Err: errors.New("invalid name")}
|
||||
return "", &PathError{Op: op, Path: name, Err: ErrInvalid}
|
||||
}
|
||||
return path.Join(f.dir, name), nil
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
package fs_test
|
||||
|
||||
import (
|
||||
"errors"
|
||||
. "io/fs"
|
||||
"testing"
|
||||
)
|
||||
@ -54,4 +55,9 @@ func TestSub(t *testing.T) {
|
||||
if pe.Path != "nonexist" {
|
||||
t.Fatalf("Open(nonexist): err.Path = %q, want %q", pe.Path, "nonexist")
|
||||
}
|
||||
|
||||
_, err = sub.Open("./")
|
||||
if !errors.Is(err, ErrInvalid) {
|
||||
t.Fatalf("Open(./): error is %v, want %v", err, ErrInvalid)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user