lib/fs: Improve root check (#6033)

The root check would allow things like c:\foobar\baz if the root was
c:\foo, because string wise that's a prefix. Now it doesn't.
This commit is contained in:
Jakob Borg
2019-09-29 23:38:11 +08:00
committed by Audrius Butkevicius
parent fd2e91c82d
commit 52d80d8144
2 changed files with 16 additions and 2 deletions

View File

@@ -62,6 +62,10 @@ func (f *BasicFilesystem) Roots() ([]string, error) {
// pathseparator.
func (f *BasicFilesystem) unrootedChecked(absPath string, roots []string) (string, *ErrWatchEventOutsideRoot) {
for _, root := range roots {
// Make sure the root ends with precisely one path separator, to
// ease prefix comparisons.
root := strings.TrimRight(root, string(PathSeparator)) + string(PathSeparator)
if absPath+string(PathSeparator) == root {
return ".", nil
}