Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kf6-kwallet for openSUSE:Factory 
checked in at 2026-07-15 16:32:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kf6-kwallet (Old)
 and      /work/SRC/openSUSE:Factory/.kf6-kwallet.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kf6-kwallet"

Wed Jul 15 16:32:01 2026 rev:31 rq:1365137 version:6.28.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kf6-kwallet/kf6-kwallet.changes  2026-06-16 
13:57:21.335090276 +0200
+++ /work/SRC/openSUSE:Factory/.kf6-kwallet.new.1991/kf6-kwallet.changes        
2026-07-15 16:41:43.162718132 +0200
@@ -1,0 +2,12 @@
+Fri Jul 10 12:16:06 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 6.28.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/6/6.28.0
+- Changes since 6.27.0:
+  * Update dependency version to 6.28.0
+  * fix(ksecretd): reject invalid UTF-8 in `SetSecret`/`CreateItem` instead of 
silent corruption
+  * Update version to 6.28.0
+
+-------------------------------------------------------------------

Old:
----
  kwallet-6.27.0.tar.xz
  kwallet-6.27.0.tar.xz.sig

New:
----
  kwallet-6.28.0.tar.xz
  kwallet-6.28.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kf6-kwallet.spec ++++++
--- /var/tmp/diff_new_pack.4CiLqk/_old  2026-07-15 16:41:46.530832651 +0200
+++ /var/tmp/diff_new_pack.4CiLqk/_new  2026-07-15 16:41:46.530832651 +0200
@@ -19,11 +19,11 @@
 %define qt6_version 6.9.0
 
 %define rname kwallet
-# Full KF6 version (e.g. 6.27.0)
+# Full KF6 version (e.g. 6.28.0)
 %{!?_kf6_version: %global _kf6_version %{version}}
 %bcond_without released
 Name:           kf6-kwallet
-Version:        6.27.0
+Version:        6.28.0
 Release:        0
 Summary:        Safe desktop-wide storage for passwords
 License:        LGPL-2.1-or-later


++++++ kwallet-6.27.0.tar.xz -> kwallet-6.28.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwallet-6.27.0/CMakeLists.txt 
new/kwallet-6.28.0/CMakeLists.txt
--- old/kwallet-6.27.0/CMakeLists.txt   2026-06-05 17:49:50.000000000 +0200
+++ new/kwallet-6.28.0/CMakeLists.txt   2026-07-03 13:00:56.000000000 +0200
@@ -1,12 +1,12 @@
 cmake_minimum_required(VERSION 3.29)
 
-set(KF_VERSION "6.27.0") # handled by release scripts
-set(KF_DEP_VERSION "6.27.0") # handled by release scripts
+set(KF_VERSION "6.28.0") # handled by release scripts
+set(KF_DEP_VERSION "6.28.0") # handled by release scripts
 project(KWallet VERSION ${KF_VERSION})
 set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
 
 include(FeatureSummary)
-find_package(ECM 6.27.0  NO_MODULE)
+find_package(ECM 6.28.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL "https://invent.kde.org/frameworks/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
@@ -57,7 +57,7 @@
 
 ecm_set_disabled_deprecation_versions(
     QT 6.11.0
-    KF 6.26.0
+    KF 6.27.0
 )
 
 if (WIN32)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwallet-6.27.0/po/nb/kwalletd6.po 
new/kwallet-6.28.0/po/nb/kwalletd6.po
--- old/kwallet-6.27.0/po/nb/kwalletd6.po       2026-06-05 17:49:50.000000000 
+0200
+++ new/kwallet-6.28.0/po/nb/kwalletd6.po       2026-07-03 13:00:56.000000000 
+0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2026-02-18 00:41+0000\n"
 "PO-Revision-Date: 2015-04-27 19:45+0200\n"
 "Last-Translator: Bjørn Steensrud <[email protected]>\n"
-"Language-Team: Norwegian Bokmål <[email protected]>\n"
+"Language-Team: Norwegian Bokmål <[email protected]>\n"
 "Language: nb\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwallet-6.27.0/po/nn/kwallet6-query.po 
new/kwallet-6.28.0/po/nn/kwallet6-query.po
--- old/kwallet-6.27.0/po/nn/kwallet6-query.po  2026-06-05 17:49:50.000000000 
+0200
+++ new/kwallet-6.28.0/po/nn/kwallet6-query.po  2026-07-03 13:00:56.000000000 
+0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2015-08-28 20:25+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwallet-6.27.0/po/nn/kwalletd6.po 
new/kwallet-6.28.0/po/nn/kwalletd6.po
--- old/kwallet-6.27.0/po/nn/kwalletd6.po       2026-06-05 17:49:50.000000000 
+0200
+++ new/kwallet-6.28.0/po/nn/kwalletd6.po       2026-07-03 13:00:56.000000000 
+0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2026-02-18 00:41+0000\n"
 "PO-Revision-Date: 2026-04-18 15:27+0200\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwallet-6.27.0/src/runtime/ksecretd/autotests/fdo_secrets_test.cpp 
new/kwallet-6.28.0/src/runtime/ksecretd/autotests/fdo_secrets_test.cpp
--- old/kwallet-6.27.0/src/runtime/ksecretd/autotests/fdo_secrets_test.cpp      
2026-06-05 17:49:50.000000000 +0200
+++ new/kwallet-6.28.0/src/runtime/ksecretd/autotests/fdo_secrets_test.cpp      
2026-07-03 13:00:56.000000000 +0200
@@ -606,6 +606,82 @@
     QCOMPARE(attribs.getStringParam({"dir1", "name1"}, "param1", "default"), 
"default");
 }
 
+void FdoSecretsTest::invalidUtf8Rejected()
+{
+    const QStringList wallets = {"wallet1"};
+    const QStringList folders = {FDO_SECRETS_DEFAULT_DIR};
+    const QStringList entries = {"item1"};
+    SET_FUNCTION_RESULT(KSecretD::wallets, wallets);
+    SET_FUNCTION_RESULT(KSecretD::folderList, folders);
+    SET_FUNCTION_RESULT(KSecretD::entryList, entries);
+
+    SET_FUNCTION_IMPL(KSecretD::entryType, [](int, const QString &, const 
QString &, const QString &) -> int {
+        return KWallet::Wallet::Password;
+    });
+
+    SET_FUNCTION_IMPL(KSecretD::readPassword, [](int, const QString &, const 
QString &, const QString &) -> QString {
+        return QStringLiteral("valid-password");
+    });
+
+    bool writePasswordCalled = false;
+    SET_FUNCTION_IMPL(KSecretD::writePassword, [&](int, const QString &, const 
QString &, const QString &, const QString &) -> int {
+        writePasswordCalled = true;
+        return 0;
+    });
+
+    std::unique_ptr<KSecretD> kwalletd{new KSecretD};
+    std::unique_ptr<KWalletFreedesktopService> service{new 
KWalletFreedesktopService(kwalletd.get())};
+
+    auto collection = service->getCollectionByWalletName("wallet1");
+    QVERIFY(collection);
+
+    collection->itemAttributes().newItem({FDO_SECRETS_DEFAULT_DIR, "item1"});
+
+    using OpenAsyncT = int (KSecretD::*)(const QString &, qlonglong, const 
QString &, bool, const QDBusConnection &, const QDBusMessage &);
+    SET_FUNCTION_IMPL_OVERLOADED(KSecretD::openAsync,
+                                 OpenAsyncT,
+                                 [](const QString &, qlonglong, const QString 
&, bool, const QDBusConnection &, const QDBusMessage &) -> int {
+                                     return 0;
+                                 });
+
+    QDBusObjectPath promptPath;
+    service->Unlock({collection->fdoObjectPath()}, promptPath);
+    auto prompt = service->getPromptByObjectPath(promptPath);
+    QVERIFY(prompt);
+    prompt->Prompt("wndid");
+    Q_EMIT kwalletd->walletAsyncOpened(0, 0);
+    SET_FUNCTION_RESULT_OVERLOADED(KSecretD::isOpen, true, 
bool(KSecretD::*)(int));
+    QVERIFY(!collection->locked());
+
+    auto item = collection->findItemByEntryLocation({FDO_SECRETS_DEFAULT_DIR, 
"item1"});
+    QVERIFY(item);
+
+    auto message = QDBusMessage::createSignal("dummy", "dummy", "dummy");
+    auto [sessionPath, symmetricKey, commonSecretSize, errorStr] = 
setupSession(service.get());
+    QVERIFY2(errorStr.isEmpty(), errorStr.constData());
+    Q_UNUSED(commonSecretSize);
+    Q_UNUSED(symmetricKey);
+
+    /* Invalid UTF-8 bytes (gzip magic + random binary) with text/plain must 
be rejected */
+    QByteArray invalidUtf8("\x1f\x8b\x08\x00\xff\xfe\xfd\xfc\xfb\xfa", 10);
+    QVERIFY(!invalidUtf8.isValidUtf8());
+
+    FreedesktopSecret invalidSecret(sessionPath, invalidUtf8, "text/plain; 
charset=utf8");
+    service->ensecret(message, invalidSecret);
+
+    writePasswordCalled = false;
+    item->SetSecret(invalidSecret);
+    QVERIFY2(!writePasswordCalled, "writePassword must not be called for 
invalid UTF-8 with text/ content_type");
+
+    /* Valid UTF-8 with text/plain must still be accepted */
+    FreedesktopSecret validSecret(sessionPath, QByteArray("Hello, valid 
UTF-8!"), "text/plain; charset=utf8");
+    service->ensecret(message, validSecret);
+
+    writePasswordCalled = false;
+    item->SetSecret(validSecret);
+    QVERIFY2(writePasswordCalled, "writePassword must be called for valid 
UTF-8 with text/ content_type");
+}
+
 void FdoSecretsTest::walletNameEncodeDecode()
 {
 #define ENCODE_DECODE_CHECK(DECODED, ENCODED)                                  
                                                                                
\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwallet-6.27.0/src/runtime/ksecretd/autotests/fdo_secrets_test.h 
new/kwallet-6.28.0/src/runtime/ksecretd/autotests/fdo_secrets_test.h
--- old/kwallet-6.27.0/src/runtime/ksecretd/autotests/fdo_secrets_test.h        
2026-06-05 17:49:50.000000000 +0200
+++ new/kwallet-6.28.0/src/runtime/ksecretd/autotests/fdo_secrets_test.h        
2026-07-03 13:00:56.000000000 +0200
@@ -32,6 +32,7 @@
     void sessionWithShortClientPublicKey();
     void sessionWithMsbSetClientPublicKey();
     void attributes();
+    void invalidUtf8Rejected();
     void walletNameEncodeDecode();
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwallet-6.27.0/src/runtime/ksecretd/ksecretd.notifyrc 
new/kwallet-6.28.0/src/runtime/ksecretd/ksecretd.notifyrc
--- old/kwallet-6.27.0/src/runtime/ksecretd/ksecretd.notifyrc   2026-06-05 
17:49:50.000000000 +0200
+++ new/kwallet-6.28.0/src/runtime/ksecretd/ksecretd.notifyrc   2026-07-03 
13:00:56.000000000 +0200
@@ -24,6 +24,7 @@
 Comment[ia]=KDE Wallet (Portafolio de KDE)
 Comment[is]=KDE Wallet
 Comment[it]=Portafoglio di KDE
+Comment[ja]=KDE Wallet
 Comment[ka]=KDE-ის საფულე
 Comment[ko]=KDE 지갑
 Comment[lt]=KDE slaptažodinė
@@ -117,6 +118,7 @@
 Name[ia]=Il necessita de un contrasigno
 Name[is]=Þarf lykilorð
 Name[it]=Richiede password
+Name[ja]=パスワードの要求時
 Name[ka]=სჭირდება პაროლი
 Name[ko]=암호 필요함
 Name[lt]=Reikalauja slaptažodžio
@@ -173,7 +175,7 @@
 Comment[id]=Daemon Wallet KDE meminta sandi
 Comment[is]=KDE Wallet-miðlarinn biður um lykilorð
 Comment[it]=Il demone dei portafogli di KDE richiede una password
-Comment[ja]=KDE ウォレットデーモンがパスワードを要求しています
+Comment[ja]=KDE ウォレットデーモンがパスワードを要求したとき
 Comment[ka]=KDE-ის საფულის დემონი პაროლს ითხოვს
 Comment[kk]=KDE әмиян қызметі паролін қажет етеді
 Comment[km]=ដេមិន​កាបូប​របស់ KDE ស្នើ​ពាក្យសម្ងាត់
@@ -242,6 +244,7 @@
 Name[id]=Sinkronisasi Gagal
 Name[is]=Samstilling mistókst
 Name[it]=Sincronizzazione non riuscita
+Name[ja]=同期失敗
 Name[ka]=სინქრონიზაცია ჩავარდა
 Name[kk]=Қадамдастыру жаңылды
 Name[ko]=동기화 실패
@@ -298,6 +301,7 @@
 Comment[id]=Sistem Wallet KDE gagal sinkronisasi file wallet ke cakram
 Comment[is]=KDE Wallet-kerfið náði ekki að samstilla veskisskrá á disk
 Comment[it]=Il sistema di portafogli di KDE non è riuscito a sincronizzare il 
file del portafogli sul disco
+Comment[ja]=KDE ウォレットシステムがウォレットファイルのディスク同期に失敗したとき
 Comment[ka]=KDE-ის საფულის სისტემის დისკთან სინქრონიზაციის შეცდომა
 Comment[kk]=KDE әмиян жүйесінің дискідегі әмиян файлымен қадамдастыру жаңылысы
 Comment[ko]=KDE 지갑 시스템과 디스크의 지갑 상태를 동기화할 수 없음
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwallet-6.27.0/src/runtime/ksecretd/kwalletdbuscontext.h 
new/kwallet-6.28.0/src/runtime/ksecretd/kwalletdbuscontext.h
--- old/kwallet-6.27.0/src/runtime/ksecretd/kwalletdbuscontext.h        
2026-06-05 17:49:50.000000000 +0200
+++ new/kwallet-6.28.0/src/runtime/ksecretd/kwalletdbuscontext.h        
2026-07-03 13:00:56.000000000 +0200
@@ -41,6 +41,12 @@
     {
         return QDBusConnection::sessionBus();
     }
+    void sendErrorReply(QDBusError::ErrorType, const QString & = {}) const
+    {
+    }
+    void sendErrorReply(const QString &, const QString & = {}) const
+    {
+    }
 };
 
 #define FDO_DBUS_CONTEXT KWalletDBusContextDummy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwallet-6.27.0/src/runtime/ksecretd/kwalletfreedesktopcollection.cpp 
new/kwallet-6.28.0/src/runtime/ksecretd/kwalletfreedesktopcollection.cpp
--- old/kwallet-6.27.0/src/runtime/ksecretd/kwalletfreedesktopcollection.cpp    
2026-06-05 17:49:50.000000000 +0200
+++ new/kwallet-6.28.0/src/runtime/ksecretd/kwalletfreedesktopcollection.cpp    
2026-07-03 13:00:56.000000000 +0200
@@ -197,6 +197,14 @@
             explicit_zero_mem(bytes.data(), bytes.size());
         } else if (xdgSchema == QStringLiteral("org.kde.KWallet.Password") || 
secret.mimeType.startsWith(QStringLiteral("text/"))) {
             auto bytes = decrypted.value.toByteArray();
+            if (!bytes.isValidUtf8()) {
+                explicit_zero_mem(bytes.data(), bytes.size());
+                sendErrorReply(QDBusError::ErrorType::InvalidArgs,
+                               QStringLiteral("Secret value contains invalid 
UTF-8 sequences but content_type declares text encoding; "
+                                              "use application/octet-stream 
for binary data"));
+                return QDBusObjectPath("/");
+            }
+
             auto str = QString::fromUtf8(bytes);
             backend()->writePassword(walletHandle(), dir, label, str, 
FDO_APPID);
             explicit_zero_mem(bytes.data(), bytes.size());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwallet-6.27.0/src/runtime/ksecretd/kwalletfreedesktopitem.cpp 
new/kwallet-6.28.0/src/runtime/ksecretd/kwalletfreedesktopitem.cpp
--- old/kwallet-6.27.0/src/runtime/ksecretd/kwalletfreedesktopitem.cpp  
2026-06-05 17:49:50.000000000 +0200
+++ new/kwallet-6.28.0/src/runtime/ksecretd/kwalletfreedesktopitem.cpp  
2026-07-03 13:00:56.000000000 +0200
@@ -178,6 +178,14 @@
 
     if (xdgSchema == QStringLiteral("org.kde.KWallet.Password") || 
secret.mimeType.startsWith(QStringLiteral("text/"))) {
         auto bytes = decrypted.value.toByteArray();
+        if (!bytes.isValidUtf8()) {
+            explicit_zero_mem(bytes.data(), bytes.size());
+            sendErrorReply(QDBusError::ErrorType::InvalidArgs,
+                           QStringLiteral("Secret value contains invalid UTF-8 
sequences but content_type declares text encoding; "
+                                          "use application/octet-stream for 
binary data"));
+            return;
+        }
+
         auto str = QString::fromUtf8(bytes);
         backend()->writePassword(fdoCollection()->walletHandle(), 
entryLocation.folder, entryLocation.key, str, FDO_APPID);
         explicit_zero_mem(bytes.data(), bytes.size());

Reply via email to