File CVE-2024-50624.patch of Package kmail-account-wizard

From ca1dc22b521911338734a2c3f81b818fa55f833e Mon Sep 17 00:00:00 2001
From: Christophe Marin <christophe@krop.fr>
Date: Mon, 28 Oct 2024 17:51:30 +0100
Subject: [PATCH] CVE-2024-50624 Use https first when looking for mail provider
 autoconfig

Backported from https://invent.kde.org/pim/kmail-account-wizard/-/commit/9784f5ab41

Fixes CVE-2024-50624, boo#1232454, kde#487882
---
 src/ispdb/ispdb.cpp | 9 +++++++--
 src/ispdb/ispdb.h   | 8 +++++---
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/ispdb/ispdb.cpp b/src/ispdb/ispdb.cpp
index 41a03aa..e3893aa 100644
--- a/src/ispdb/ispdb.cpp
+++ b/src/ispdb/ispdb.cpp
@@ -64,11 +64,14 @@ QUrl Ispdb::lookupUrl(const QString &type, const QString &version, bool auth, bo
     QUrl url;
     const QString path = type + QStringLiteral("/config-v") + version + QStringLiteral(".xml");
     switch (mServerType) {
+    case IspHttpsAutoConfig:
+        url = QUrl(QStringLiteral("https://autoconfig.") + mAddr.domain.toLower() + QLatin1Char('/') + path);
+        break;
     case IspAutoConfig:
         url = QUrl(QStringLiteral("http://autoconfig.") + mAddr.domain.toLower() + QLatin1Char('/') + path);
         break;
     case IspWellKnow:
-        url = QUrl(QStringLiteral("http://") + mAddr.domain.toLower() + QStringLiteral("/.well-known/autoconfig/") + path);
+        url = QUrl(QStringLiteral("https://") + mAddr.domain.toLower() + QStringLiteral("/.well-known/autoconfig/") + path);
         break;
     case DataBase:
         url = QUrl(QStringLiteral("https://autoconfig.thunderbird.net/v1.1/") + mAddr.domain.toLower());
@@ -94,6 +97,7 @@ void Ispdb::slotResult(KJob *job)
         bool lookupFinished = false;
 
         switch (mServerType) {
+        case IspHttpsAutoConfig:
         case IspAutoConfig:
             mServerType = IspWellKnow;
             break;
@@ -101,7 +105,7 @@ void Ispdb::slotResult(KJob *job)
             lookupFinished = true;
             break;
         case DataBase:
-            mServerType = IspAutoConfig;
+            mServerType = IspHttpsAutoConfig;
             break;
         }
 
@@ -348,6 +352,7 @@ void Ispdb::setServerType(Ispdb::searchServerType type)
         mStart = false;
         switch (mServerType) {
         case IspAutoConfig:
+        case IspHttpsAutoConfig:
             Q_EMIT searchType(i18n("Lookup configuration: Email provider"));
             break;
         case IspWellKnow:
diff --git a/src/ispdb/ispdb.h b/src/ispdb/ispdb.h
index 12de439..7c8c441 100644
--- a/src/ispdb/ispdb.h
+++ b/src/ispdb/ispdb.h
@@ -95,9 +95,11 @@ protected:
         @see lookupUrl to generate a url base on this type
      */
     enum searchServerType {
-        IspAutoConfig = 0, /**< http://autoconfig.example.com/mail/config-v1.1.xml */
-        IspWellKnow, /**< http://example.com/.well-known/autoconfig/mail/config-v1.1.xml */
-        DataBase /**< https://autoconfig.thunderbird.net/v1.1/example.com */
+        DataBase = 0, ///< https://autoconfig.thunderbird.net/v1.1/example.com */
+        IspHttpsAutoConfig = 1, ///< https://autoconfig.example.com/mail/config-v1.1.xml
+        IspAutoConfig = 2, ///< http://autoconfig.example.com/mail/config-v1.1.xml
+        IspWellKnow = 3, ///< https://example.com/.well-known/autoconfig/mail/config-v1.1.xml
+        Last = IspWellKnow
     };
 
     /** let's request the autoconfig server */
-- 
2.47.0

openSUSE Build Service is sponsored by