]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
Prevent returning a bad update channel from config
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Wed, 22 Feb 2023 19:33:21 +0000 (20:33 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 8 May 2023 11:06:58 +0000 (19:06 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/libsync/configfile.cpp

index db0f93045444fa2e08c438965340d6f8383e21d2..1e7dc3ed61741f8e91902179f3b401be79198837 100644 (file)
@@ -104,6 +104,11 @@ static constexpr char moveToTrashC[] = "moveToTrash";
 
 static constexpr char certPath[] = "http_certificatePath";
 static constexpr char certPasswd[] = "http_certificatePasswd";
+
+bool validUpdateChannel(const QString &channel)
+{
+    return channel == QStringLiteral("stable") || channel == QStringLiteral("beta");
+}
 }
 
 namespace OCC {
@@ -692,12 +697,21 @@ QString ConfigFile::updateChannel() const
     }
 
     QSettings settings(configFile(), QSettings::IniFormat);
-    return settings.value(QLatin1String(updateChannelC), defaultUpdateChannel).toString();
+    const auto channel = settings.value(QLatin1String(updateChannelC), defaultUpdateChannel).toString();
+    if (!validUpdateChannel(channel)) {
+        qCWarning(lcConfigFile()) << "Received invalid update channel from confog:"
+                                  << channel
+                                  << "defaulting to:"
+                                  << defaultUpdateChannel;
+        return defaultUpdateChannel;
+    }
+
+    return channel;
 }
 
 void ConfigFile::setUpdateChannel(const QString &channel)
 {
-    if (channel != QStringLiteral("stable") || channel != QStringLiteral("beta")) {
+    if (!validUpdateChannel(channel)) {
         qCWarning(lcConfigFile()) << "Received invalid update channel:"
                                   << channel
                                   << "can only accept 'stable' or 'beta'. Ignoring.";