Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHannah von Reth <hannah.vonreth@owncloud.com>2021-10-05 12:45:30 +0300
committerHannah von Reth <vonreth@kde.org>2021-10-06 12:17:25 +0300
commit2a06b5901650d23eba75f211d5a4cf5d3522ad7c (patch)
treefc88bb48e34410edc53fb6027151e54d70381c93 /src
parentbe064b999249f13be3c299c692938b5742a46b50 (diff)
Prevent downgrade of Windows VFS folders
Diffstat (limited to 'src')
-rw-r--r--src/gui/folder.cpp11
-rw-r--r--src/gui/folder.h3
2 files changed, 8 insertions, 6 deletions
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index 31c11ebd9..b6c7afa4f 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -58,6 +58,9 @@ auto versionC()
{
return QStringLiteral("version");
}
+
+constexpr int WinVfsSettingsVersion = 4;
+constexpr int SettingsVersion = 2;
}
namespace OCC {
@@ -1309,11 +1312,9 @@ void FolderDefinition::save(QSettings &settings, const FolderDefinition &folder)
settings.setValue(QStringLiteral("virtualFilesMode"), Vfs::modeToString(folder.virtualFilesMode));
// Ensure new vfs modes won't be attempted by older clients
- if (folder.virtualFilesMode == Vfs::WindowsCfApi) {
- settings.setValue(versionC(), 3);
- } else {
- settings.setValue(versionC(), 2);
- }
+ const int version = folder.virtualFilesMode == Vfs::WindowsCfApi ? WinVfsSettingsVersion : SettingsVersion;
+ Q_ASSERT(version <= maxSettingsVersion());
+ settings.setValue(versionC(), version);
// Happens only on Windows when the explorer integration is enabled.
if (!folder.navigationPaneClsid.isNull())
diff --git a/src/gui/folder.h b/src/gui/folder.h
index ecd3327a9..3f7d30737 100644
--- a/src/gui/folder.h
+++ b/src/gui/folder.h
@@ -90,8 +90,9 @@ public:
* Version 2: introduction of metadata_parent hash in 2.6.0
* (version remains readable by 2.5.1)
* Version 3: introduction of new windows vfs mode in 2.6.0
+ * Version 4: until 2.9.1 windows vfs tried to unregister folders with a different id from windows.
*/
- static int maxSettingsVersion() { return 3; }
+ static int maxSettingsVersion() { return 4; }
/// Ensure / as separator and trailing /.
static QString prepareLocalPath(const QString &path);