Protect against roots that are contained within other roots

Summary:
For example, I could have a root named `random` and another root named `randomColor`.
A child of `randomColor` would **incorrectly** pass as a descendant of `random`.

So this commit changes `isDescendant` to do 2 things:
- check for exact matches (eg: the path is a root)
- call `startsWith` like before, but append `path.sep` to avoid false positives
Closes https://github.com/facebook/react-native/pull/9831

Differential Revision: D3864968

fbshipit-source-id: 7fe04913579aa0741840fc925216283304ae3433
This commit is contained in:
aleclarsoniv 2016-09-14 13:38:15 -07:00 committed by Facebook Github Bot 9
parent 3dac49a4f5
commit d4dff25292
2 changed files with 2 additions and 2 deletions

View File

@ -70,7 +70,7 @@ function watchmanRecReadDir(roots, {ignore, fileWatcher, exts}) {
}
function isDescendant(root, child) {
return child.startsWith(root);
return root === child || child.startsWith(root + path.sep);
}
module.exports = watchmanRecReadDir;

View File

@ -362,7 +362,7 @@ function makeReadCallback(fd, predicate, callback) {
}
function isDescendant(root, child) {
return child.startsWith(root);
return root === child || child.startsWith(root + path.sep);
}
module.exports = Fastfs;