Merge pull request #1032 from lioncash/sanitize

vfs: Use sanitized paths within MoveFile() and MoveDirectory()
This commit is contained in:
bunnei 2018-08-13 01:43:35 -04:00 committed by GitHub
commit e67630b51e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -74,15 +74,15 @@ VirtualFile VfsFilesystem::CopyFile(std::string_view old_path_, std::string_view
return new_file; return new_file;
} }
VirtualFile VfsFilesystem::MoveFile(std::string_view old_path_, std::string_view new_path_) { VirtualFile VfsFilesystem::MoveFile(std::string_view old_path, std::string_view new_path) {
const auto old_path = FileUtil::SanitizePath(old_path_); const auto sanitized_old_path = FileUtil::SanitizePath(old_path);
const auto new_path = FileUtil::SanitizePath(new_path_); const auto sanitized_new_path = FileUtil::SanitizePath(new_path);
// Again, non-default impls are highly encouraged to provide a more optimized version of this. // Again, non-default impls are highly encouraged to provide a more optimized version of this.
auto out = CopyFile(old_path_, new_path_); auto out = CopyFile(sanitized_old_path, sanitized_new_path);
if (out == nullptr) if (out == nullptr)
return nullptr; return nullptr;
if (DeleteFile(old_path)) if (DeleteFile(sanitized_old_path))
return out; return out;
return nullptr; return nullptr;
} }
@ -137,15 +137,15 @@ VirtualDir VfsFilesystem::CopyDirectory(std::string_view old_path_, std::string_
return new_dir; return new_dir;
} }
VirtualDir VfsFilesystem::MoveDirectory(std::string_view old_path_, std::string_view new_path_) { VirtualDir VfsFilesystem::MoveDirectory(std::string_view old_path, std::string_view new_path) {
const auto old_path = FileUtil::SanitizePath(old_path_); const auto sanitized_old_path = FileUtil::SanitizePath(old_path);
const auto new_path = FileUtil::SanitizePath(new_path_); const auto sanitized_new_path = FileUtil::SanitizePath(new_path);
// Non-default impls are highly encouraged to provide a more optimized version of this. // Non-default impls are highly encouraged to provide a more optimized version of this.
auto out = CopyDirectory(old_path_, new_path_); auto out = CopyDirectory(sanitized_old_path, sanitized_new_path);
if (out == nullptr) if (out == nullptr)
return nullptr; return nullptr;
if (DeleteDirectory(old_path)) if (DeleteDirectory(sanitized_old_path))
return out; return out;
return nullptr; return nullptr;
} }