From b8adbb9b73751b022b42180dcc213dc99be9765b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 2 Sep 2017 13:58:57 +0200 Subject: GH-1971 do not check filesystem boundaries when committing instances The check wasn't very good and was breaking because it assumed uniform paths. --- api/logic/FolderInstanceProvider.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'api/logic/FolderInstanceProvider.cpp') diff --git a/api/logic/FolderInstanceProvider.cpp b/api/logic/FolderInstanceProvider.cpp index ea0d4ef0..88b5bdc6 100644 --- a/api/logic/FolderInstanceProvider.cpp +++ b/api/logic/FolderInstanceProvider.cpp @@ -327,17 +327,14 @@ QString FolderInstanceProvider::getStagedInstancePath() bool FolderInstanceProvider::commitStagedInstance(const QString& keyPath, const QString& path, const QString& instanceName, const QString& groupName) { - if(!path.contains(keyPath)) - { - qWarning() << "It is not possible to commit" << path << "because it is not in" << keyPath; - return false; - } QDir dir; QString instID = FS::DirNameFromString(instanceName, m_instDir); { WatchLock lock(m_watcher, m_instDir); - if(!dir.rename(path, FS::PathCombine(m_instDir, instID))) + QString destination = FS::PathCombine(m_instDir, instID); + if(!dir.rename(path, destination)) { + qWarning() << "Failed to move" << path << "to" << destination; destroyStagingPath(keyPath); return false; } -- cgit v1.2.3