commit: 6c0653910ae214683018ca7a8c212116d612c07d Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Wed Jun 4 19:37:39 2025 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Mon Jun 9 20:47:14 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6c065391
dev-qt/qtxml: drop 5.15.16-r1 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> dev-qt/qtxml/Manifest | 2 - .../qtxml/files/qtxml-5.15.16-CVE-2025-30348.patch | 156 --------------------- dev-qt/qtxml/qtxml-5.15.16-r1.ebuild | 31 ---- 3 files changed, 189 deletions(-) diff --git a/dev-qt/qtxml/Manifest b/dev-qt/qtxml/Manifest index 691fce5ddc9c..e64403d9545b 100644 --- a/dev-qt/qtxml/Manifest +++ b/dev-qt/qtxml/Manifest @@ -1,5 +1,3 @@ DIST qtbase-5.15-gentoo-patchset-6.tar.xz 8288 BLAKE2B ad9695a528345dd3b8e9ce72b7bdfe8f744f16685a567bbc7862ba6c28e5a426260cb0b73e2573cb3a6f16f1785786898ffb44c90f5d75354b97e5756c7573db SHA512 97bc4d5375e1750a5578439ff320ee2e5e929df1dafe56b4e86f2de8ad26c91dc4002e45ad75d9f936347d49b9f54c0c42f8fc2cb7dfd4f54bf08a210b3bc720 -DIST qtbase-5.15.16-gentoo-kde-1.tar.xz 319504 BLAKE2B 52675483f6be19a3efbddbe68335ee575852859137c51ca9e7cc219740a3529d270cb2af085eee8de1964c2171eab4f0c64b79c03f1bac453a4829748aff528d SHA512 0a38ce02b563f79364f3559fda4d4e13092ee79b820fb780db10e40af3bac158ee139e1a216f4de3c986eacbd933965e7ed8c261de7a65d487981887aed840dd DIST qtbase-5.15.17-gentoo-kde-1.tar.xz 314280 BLAKE2B a13b0589fab0f43be9b2ba6a669845572ee499363cbe2a8c0975eaf193101960f11efc96f3324d8662a458e41bea42e6d706b3f099f4cfbbea585cab8c3f3f55 SHA512 4b12db534e9fa5f24f597f4e760c8b70d5a41e732b588a9a53f95f4e849cb07a5c8a7f4c3fb690c8b98986a13b1c972b9aac15cfe43ef5b8ab26492b8987169a -DIST qtbase-everywhere-opensource-src-5.15.16.tar.xz 51392072 BLAKE2B f7f83f18f91200350eff4d2d8d56769b537540290434a1c434d7c891b0b533d5a77000b5a670228a947d74c21f131f207b31aeb96f1f2ec867bbf608202c99b0 SHA512 190581c7df9763c2550466f884784d6f38817a087ab44fe57b99c1d1ac2ea3bae94ced8a6d0873a7999e523d63831d135cd7407812c8814ac4ef957840b7058e DIST qtbase-everywhere-opensource-src-5.15.17.tar.xz 51478524 BLAKE2B 1700126de93ecfc2efd128056a295b8fdd2293e2df41e4fefa3d6f61c250d1ae8502a483192ffa85bd1fbd8d086cfd26612c951fb822c19bd0ec3f1b49241968 SHA512 8be592e27279d1009b596535fee95cb6fa8a379e991db5b0f3fa24fcddde7433d2cdfe2cd3fc5fff3f8e112110c5d8fa60c9efd9254053ea08ded5c3f9b73571 diff --git a/dev-qt/qtxml/files/qtxml-5.15.16-CVE-2025-30348.patch b/dev-qt/qtxml/files/qtxml-5.15.16-CVE-2025-30348.patch deleted file mode 100644 index bbc001a77d40..000000000000 --- a/dev-qt/qtxml/files/qtxml-5.15.16-CVE-2025-30348.patch +++ /dev/null @@ -1,156 +0,0 @@ -From 16918c1df3e709df2a97281e3825d94c84edb668 Mon Sep 17 00:00:00 2001 -From: Christian Ehrlicher <ch.ehrlic...@gmx.de> -Date: Tue, 06 Aug 2024 22:39:44 +0200 -Subject: [PATCH] XML/QDom: speedup encodeText() - -The code copied the whole string, then replaced parts inline, at -the cost of relocating everything beyond, at each replacement. -Instead, copy character by character (in chunks where possible) -and append replacements as we skip what they replace. - -Manual conflict resolution for 6.5: -- This is a manual cherry-pick. The original change was only - picked to 6.8, but the quadratic behavior is present in Qt 5, too. -- Changed Task-number to Fixes: because this is the real fix; - the QString change, 315210de916d060c044c01e53ff249d676122b1b, - was unrelated to the original QTBUG-127549. - -Manual conflcit resolution for 5.15: -- Kept/re-added QTextCodec::canEncode() check -- Ported from Qt 6 to 5, to wit: - - qsizetype -> int - - QStringView::first/sliced(n) -> left/mid(n) - (these functions are clearly called in-range, so the widened - contract of the Qt 5 functions doesn't matter) -- Ported from C++17- and C++14-isms to C++11: - - replaced polymorphic lambda with a normal one (this requires - rewriting the !canEncode() branch to use QByteArray/QLatin1String - instead of QString) -- As a drive-by, corrected the indentation of the case labels to - horizontally align existing code (and follow Qt style) - -Fixes: QTBUG-127549 -Change-Id: I368482859ed0c4127f1eec2919183711b5488ada -Reviewed-by: Edward Welbourne <edward.welbou...@qt.io> -(cherry picked from commit 2ce08e3671b8d18b0284447e5908ce15e6e8f80f) -Reviewed-by: Qt Cherry-pick Bot <cherrypick_...@qt-project.org> -(cherry picked from commit 225e235cf966a44af23dbe9aaaa2fd20ab6430ee) -Reviewed-by: Fabian Kosmale <fabian.kosm...@qt.io> -(cherry picked from commit 905a5bd421efff6a1d90b6140500d134d32ca745) ---- - -diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp -index 872221c..bf70477 100644 ---- a/src/xml/dom/qdom.cpp -+++ b/src/xml/dom/qdom.cpp -@@ -3676,59 +3676,67 @@ - const QTextCodec *const codec = s.codec(); - Q_ASSERT(codec); - #endif -- QString retval(str); -- int len = retval.length(); -- int i = 0; -+ QString retval; -+ int start = 0; -+ auto appendToOutput = [&](int cur, QLatin1String replacement) -+ { -+ if (start < cur) { -+ retval.reserve(str.size() + replacement.size()); -+ retval.append(QStringView(str).left(cur).mid(start)); -+ } -+ // Skip over str[cur], replaced by replacement -+ start = cur + 1; -+ retval.append(replacement); -+ }; - -- while (i < len) { -- const QChar ati(retval.at(i)); -- -- if (ati == QLatin1Char('<')) { -- retval.replace(i, 1, QLatin1String("<")); -- len += 3; -- i += 4; -- } else if (encodeQuotes && (ati == QLatin1Char('"'))) { -- retval.replace(i, 1, QLatin1String(""")); -- len += 5; -- i += 6; -- } else if (ati == QLatin1Char('&')) { -- retval.replace(i, 1, QLatin1String("&")); -- len += 4; -- i += 5; -- } else if (ati == QLatin1Char('>') && i >= 2 && retval[i - 1] == QLatin1Char(']') && retval[i - 2] == QLatin1Char(']')) { -- retval.replace(i, 1, QLatin1String(">")); -- len += 3; -- i += 4; -- } else if (performAVN && -- (ati == QChar(0xA) || -- ati == QChar(0xD) || -- ati == QChar(0x9))) { -- const QString replacement(QLatin1String("&#x") + QString::number(ati.unicode(), 16) + QLatin1Char(';')); -- retval.replace(i, 1, replacement); -- i += replacement.length(); -- len += replacement.length() - 1; -- } else if (encodeEOLs && ati == QChar(0xD)) { -- retval.replace(i, 1, QLatin1String("
")); // Replace a single 0xD with a ref for 0xD -- len += 4; -- i += 5; -- } else { -+ const int len = str.size(); -+ for (int cur = 0; cur < len; ++cur) { -+ switch (const char16_t ati = str[cur].unicode()) { -+ case u'<': -+ appendToOutput(cur, QLatin1String("<")); -+ break; -+ case u'"': -+ if (encodeQuotes) -+ appendToOutput(cur, QLatin1String(""")); -+ break; -+ case u'&': -+ appendToOutput(cur, QLatin1String("&")); -+ break; -+ case u'>': -+ if (cur >= 2 && str[cur - 1] == u']' && str[cur - 2] == u']') -+ appendToOutput(cur, QLatin1String(">")); -+ break; -+ case u'\r': -+ if (performAVN || encodeEOLs) -+ appendToOutput(cur, QLatin1String("
")); // \r == 0x0d -+ break; -+ case u'\n': -+ if (performAVN) -+ appendToOutput(cur, QLatin1String("
")); // \n == 0x0a -+ break; -+ case u'\t': -+ if (performAVN) -+ appendToOutput(cur, QLatin1String("	")); // \t == 0x09 -+ break; -+ default: - #if QT_CONFIG(textcodec) - if(codec->canEncode(ati)) -- ++i; -+ ; // continue - else - #endif - { - // We have to use a character reference to get it through. -- const ushort codepoint(ati.unicode()); -- const QString replacement(QLatin1String("&#x") + QString::number(codepoint, 16) + QLatin1Char(';')); -- retval.replace(i, 1, replacement); -- i += replacement.length(); -- len += replacement.length() - 1; -+ const QByteArray replacement = "&#x" + QByteArray::number(uint{ati}, 16) + ';'; -+ appendToOutput(cur, QLatin1String{replacement}); - } -+ break; - } - } -- -- return retval; -+ if (start > 0) { -+ retval.append(QStringView(str).left(len).mid(start)); -+ return retval; -+ } -+ return str; - } - - void QDomAttrPrivate::save(QTextStream& s, int, int) const diff --git a/dev-qt/qtxml/qtxml-5.15.16-r1.ebuild b/dev-qt/qtxml/qtxml-5.15.16-r1.ebuild deleted file mode 100644 index db865797bf3f..000000000000 --- a/dev-qt/qtxml/qtxml-5.15.16-r1.ebuild +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -if [[ ${PV} != *9999* ]]; then - QT5_KDEPATCHSET_REV=1 - KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv x86" -fi - -QT5_MODULE="qtbase" -inherit qt5-build - -DESCRIPTION="Implementation of SAX and DOM for the Qt5 framework" - -IUSE="" - -RDEPEND="=dev-qt/qtcore-${QT5_PV}*:5=" -DEPEND="${RDEPEND} - test? ( =dev-qt/qtnetwork-${QT5_PV}* ) -" - -QT5_TARGET_SUBDIRS=( - src/xml -) - -QT5_GENTOO_PRIVATE_CONFIG=( - :xml -) - -PATCHES=( "${FILESDIR}/${P}-CVE-2025-30348.patch" )