| Index: base/files/file_path.cc
|
| diff --git a/base/files/file_path.cc b/base/files/file_path.cc
|
| index 18775ed9ca99acf7b6b61d21b2e44fbcbdbe0b0b..c142db44b6174c7c5cf2f11d32d90652405c072b 100644
|
| --- a/base/files/file_path.cc
|
| +++ b/base/files/file_path.cc
|
| @@ -562,18 +562,24 @@ bool FilePath::ReferencesParent() const {
|
| std::vector<StringType> components;
|
| GetComponents(&components);
|
|
|
| - std::vector<StringType>::const_iterator it = components.begin();
|
| - for (; it != components.end(); ++it) {
|
| - const StringType& component = *it;
|
| + for (const StringType& component : components) {
|
| +#if defined(OS_WIN)
|
| // Windows has odd, undocumented behavior with path components containing
|
| // only whitespace and . characters. So, if all we see is . and
|
| // whitespace, then we treat any .. sequence as referencing parent.
|
| - // For simplicity we enforce this on all platforms.
|
| if (component.find_first_not_of(FILE_PATH_LITERAL(". \n\r\t")) ==
|
| std::string::npos &&
|
| component.find(kParentDirectory) != std::string::npos) {
|
| + // Add a debug-only warning so Windows-specific bot failures are easier to
|
| + // diagnose.
|
| + DLOG_IF(WARNING, component != kParentDirectory)
|
| + << "Rejecting Windows-specific path component.";
|
| return true;
|
| }
|
| +#else
|
| + if (component == kParentDirectory)
|
| + return true;
|
| +#endif
|
| }
|
| return false;
|
| }
|
|
|