Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kf6-kmime for openSUSE:Factory checked in at 2026-08-17 16:57:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kf6-kmime (Old) and /work/SRC/openSUSE:Factory/.kf6-kmime.new.1258 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-kmime" Mon Aug 17 16:57:58 2026 rev:3 rq:1371392 version:6.29.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kf6-kmime/kf6-kmime.changes 2026-07-15 16:45:42.746849526 +0200 +++ /work/SRC/openSUSE:Factory/.kf6-kmime.new.1258/kf6-kmime.changes 2026-08-17 17:01:38.080632662 +0200 @@ -1,0 +2,13 @@ +Sun Aug 9 10:38:38 UTC 2026 - Christophe Marin <[email protected]> + +- Update to 6.29.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/6/6.29.0 +- Changes since 6.28.0: + * Update dependency version to 6.29.0 + * Limit the strlen search length as well + * Abort search for encoding word end on first error + * Update version to 6.29.0 + +------------------------------------------------------------------- Old: ---- kmime-6.28.0.tar.xz kmime-6.28.0.tar.xz.sig New: ---- kmime-6.29.0.tar.xz kmime-6.29.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kf6-kmime.spec ++++++ --- /var/tmp/diff_new_pack.VJxodU/_old 2026-08-17 17:01:38.807658350 +0200 +++ /var/tmp/diff_new_pack.VJxodU/_new 2026-08-17 17:01:38.810658456 +0200 @@ -20,11 +20,11 @@ %define qt6_version 6.9.0 %define rname kmime -# Full KF6 version (e.g. 6.28.0) +# Full KF6 version (e.g. 6.29.0) %{!?_kf6_version: %global _kf6_version %{version}} %bcond_without released Name: kf6-kmime -Version: 6.28.0 +Version: 6.29.0 Release: 0 Summary: Library to assist handling MIME data License: LGPL-2.1-or-later ++++++ kmime-6.28.0.tar.xz -> kmime-6.29.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-6.28.0/CMakeLists.txt new/kmime-6.29.0/CMakeLists.txt --- old/kmime-6.28.0/CMakeLists.txt 2026-07-03 12:57:42.000000000 +0200 +++ new/kmime-6.29.0/CMakeLists.txt 2026-08-07 22:41:48.000000000 +0200 @@ -1,12 +1,12 @@ cmake_minimum_required(VERSION 3.29) -set(KF_VERSION "6.28.0") # handled by release scripts -set(KF_DEP_VERSION "6.28.0") # handled by release scripts +set(KF_VERSION "6.29.0") # handled by release scripts +set(KF_DEP_VERSION "6.29.0") # handled by release scripts project(KMime VERSION ${KF_VERSION}) include(FeatureSummary) -find_package(ECM 6.28.0 NO_MODULE) +find_package(ECM 6.29.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-6.28.0/autotests/headertest.cpp new/kmime-6.29.0/autotests/headertest.cpp --- old/kmime-6.28.0/autotests/headertest.cpp 2026-07-03 12:57:42.000000000 +0200 +++ new/kmime-6.29.0/autotests/headertest.cpp 2026-08-07 22:41:48.000000000 +0200 @@ -1030,6 +1030,17 @@ QCOMPARE(hdr.mailboxes().at(0).address(), "[email protected]"); QCOMPARE(hdr.mailboxes().at(0).name(), encodedWord); // invalid name is not decoded and preserved as-is } +void HeaderTest::testQuadraticQEncoding() +{ + QByteArray input("To:"); + input.reserve(2'000'0000); + for (auto i = 0; i < 250'000; ++i) { + input.push_back("=?q? =? "); + } + Headers::To to; + to.from7BitString(input); + // nothing to verify, when broken this timeouts the test +} void HeaderTest::testMissingQuotes() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-6.28.0/autotests/headertest.h new/kmime-6.29.0/autotests/headertest.h --- old/kmime-6.28.0/autotests/headertest.h 2026-07-03 12:57:42.000000000 +0200 +++ new/kmime-6.29.0/autotests/headertest.h 2026-08-07 22:41:48.000000000 +0200 @@ -32,6 +32,7 @@ void testInvalidButOkQEncoding(); void testInvalidQEncoding(); void testInvalidQEncoding_data(); + void testQuadraticQEncoding(); void testBug271192(); void testBug271192_data(); void testMissingQuotes(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-6.28.0/poqm/de/libkmime6_qt.po new/kmime-6.29.0/poqm/de/libkmime6_qt.po --- old/kmime-6.28.0/poqm/de/libkmime6_qt.po 2026-07-03 12:57:42.000000000 +0200 +++ new/kmime-6.29.0/poqm/de/libkmime6_qt.po 2026-08-07 22:41:48.000000000 +0200 @@ -1,5 +1,5 @@ +# SPDX-FileCopyrightText: 2005-2008 Thomas Reitelbach <[email protected]> # SPDX-FileCopyrightText: 2024 Johannes Obermayr <[email protected]> -# SPDX-FileCopyrightText: 2005, 2006, 2007, 2008 Thomas Reitelbach <[email protected]> msgid "" msgstr "" "Project-Id-Version: libkmime6_qt\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-6.28.0/poqm/nn/libkmime6_qt.po new/kmime-6.29.0/poqm/nn/libkmime6_qt.po --- old/kmime-6.28.0/poqm/nn/libkmime6_qt.po 2026-07-03 12:57:42.000000000 +0200 +++ new/kmime-6.29.0/poqm/nn/libkmime6_qt.po 2026-08-07 22:41:48.000000000 +0200 @@ -1,5 +1,6 @@ # Translation of libkmime6_qt to Norwegian Nynorsk # +# Karl Ove Hufthammer <[email protected]>, 2008, 2020, 2024. # Eirik U. Birkeland <[email protected]>, 2008. msgid "" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-6.28.0/src/headerparsing.cpp new/kmime-6.29.0/src/headerparsing.cpp --- old/kmime-6.28.0/src/headerparsing.cpp 2026-07-03 12:57:42.000000000 +0200 +++ new/kmime-6.29.0/src/headerparsing.cpp 2026-08-07 22:41:48.000000000 +0200 @@ -95,7 +95,8 @@ // extract charset information (keep in mind: the size given to the // ctor is one off due to the \0 terminator): // harden this against null bytes in the input, Qt crashes on that - QByteArrayView maybeCharset(charsetStart, std::min<qsizetype>((languageStart ? languageStart - 1 : scursor) - charsetStart, std::strlen(charsetStart))); + const qsizetype charsetLen = (languageStart ? languageStart - 1 : scursor) - charsetStart; + QByteArrayView maybeCharset(charsetStart, std::min<qsizetype>(charsetLen, qstrnlen(charsetStart, charsetLen))); // // STEP 2: @@ -122,7 +123,8 @@ // extract the encoding information // harden this against null bytes in the input, Qt crashes on that - QByteArrayView maybeEncoding(encodingStart, std::min<qsizetype>(scursor - encodingStart, std::strlen(encodingStart))); + const qsizetype encodingLen = scursor - encodingStart; + QByteArrayView maybeEncoding(encodingStart, std::min<qsizetype>(scursor - encodingStart, qstrnlen(encodingStart, encodingLen))); // qCDebug(KMIME_LOG) << "parseEncodedWord: found charset == \"" << maybeCharset // << "\"; language == \"" << maybeLanguage @@ -146,11 +148,10 @@ if (*(scursor - 1) == '=') { state.encodedWordRetryPoint = scursor - 1; } - continue; } else { // yep, found a '?=' sequence scursor += 2; - break; } + break; } else { // The '?' is the last char, but we need a '=' after it! KMIME_WARN_PREMATURE_END_OF(EncodedWord); return false;
