From c84140d29339c778d0e151b9bfdfa97e28a7e30e Mon Sep 17 00:00:00 2001 From: Klaas Freitag Date: Fri, 7 Oct 2016 16:23:13 +0200 Subject: [PATCH] checkPathValidityForNewFolder: Catch sync folders underneath sym links. plus some whitespace changes. --- src/gui/folderman.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index 0a7dc28c63..ef5dcdf7c8 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -1209,15 +1209,15 @@ QString FolderMan::checkPathValidityForNewFolder(const QString& path, const QUrl if (!forNewDirectory && differentPathes && folderDirClean.startsWith(userDirClean)) { return tr("The local folder %1 already contains a folder used in a folder sync connection. " "Please pick another one!") - .arg(QDir::toNativeSeparators(path)); + .arg(QDir::toNativeSeparators(path)); } QString absCleanUserFolder = QDir::cleanPath(QDir(path).canonicalPath())+'/'; - if (differentPathes && userDirClean.startsWith( folderDirClean )) { + if ( (forNewDirectory || differentPathes) && userDirClean.startsWith( folderDirClean )) { return tr("The local folder %1 is already contained in a folder used in a folder sync connection. " "Please pick another one!") - .arg(QDir::toNativeSeparators(path)); + .arg(QDir::toNativeSeparators(path)); } if (differentPathes && absCleanUserFolder.startsWith( folderDirClean ) && @@ -1225,9 +1225,18 @@ QString FolderMan::checkPathValidityForNewFolder(const QString& path, const QUrl return tr("The local folder %1 is a symbolic link. " "The link target is already contained in a folder used in a folder sync connection. " "Please pick another one!") - .arg(QDir::toNativeSeparators(path)); + .arg(QDir::toNativeSeparators(path)); } + if (differentPathes && folderDirClean.startsWith(absCleanUserFolder) && + absCleanUserFolder != folderDirClean && !forNewDirectory ) { + return tr("The local folder %1 contains a symbolic link. " + "The link target contains an already synced folder " + "Please pick another one!") + .arg(QDir::toNativeSeparators(path)); + } + + if( serverUrl.isValid() && absCleanUserFolder == folderDir ) { QUrl folderUrl = f->accountState()->account()->url(); QString user = f->accountState()->account()->credentials()->user();