From 2a06b5901650d23eba75f211d5a4cf5d3522ad7c Mon Sep 17 00:00:00 2001 From: Hannah von Reth Date: Tue, 5 Oct 2021 11:45:30 +0200 Subject: Prevent downgrade of Windows VFS folders --- src/gui/folder.cpp | 11 ++++++----- src/gui/folder.h | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'src') 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); -- cgit v1.2.3