From 613c024f033d9365129433ca19d68fe4939f0cd776d4de2939d83740627fe423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Wed, 21 Aug 2024 16:55:12 +0200 Subject: [PATCH] Sync from SUSE:SLFO:Main qt6-base revision 97e8943b12fabd1e67609b25309bf17a --- ...tabase-handle-buggy-type-definitions.patch | 162 ------------------ ....patch => 0001-Use-newer-GCC-on-Leap.patch | 20 +-- qt6-base.changes | 60 ++++++- qt6-base.spec | 23 +-- qtbase-everywhere-src-6.6.1.tar.xz | 3 - qtbase-everywhere-src-6.6.3.tar.xz | 3 + 6 files changed, 83 insertions(+), 188 deletions(-) delete mode 100644 0001-QMimeDatabase-handle-buggy-type-definitions.patch rename 0001-Require-GCC-12.patch => 0001-Use-newer-GCC-on-Leap.patch (78%) delete mode 100644 qtbase-everywhere-src-6.6.1.tar.xz create mode 100644 qtbase-everywhere-src-6.6.3.tar.xz diff --git a/0001-QMimeDatabase-handle-buggy-type-definitions.patch b/0001-QMimeDatabase-handle-buggy-type-definitions.patch deleted file mode 100644 index 18db8b1..0000000 --- a/0001-QMimeDatabase-handle-buggy-type-definitions.patch +++ /dev/null @@ -1,162 +0,0 @@ -From 54656da9ace06caf4a0eeb1832989c0ab211a4a0 Mon Sep 17 00:00:00 2001 -From: Alex Henrie -Date: Wed, 15 Nov 2023 09:36:06 -0700 -Subject: QMimeDatabase: handle buggy type definitions with circular - inheritance - -This fixes an infinite loop reported by a user who had both the -definition of text/javascript from shared-mime-info 2.3 and the -definition of text/javascript from shared-mime-info 2.4 installed at the -same time. In 2.3, text/javascript is a subtype of -application/ecmascript, but in 2.4 application/ecmascript is a subtype -of text/javascript. Having both at the same time resulted in circular -inheritance. - -https://gitlab.freedesktop.org/xdg/shared-mime-info/-/merge_requests/258#note_2167707 - -[ChangeLog][QtCore][QMimeDatabase] Added code to detect and break -circular inheritance loops in the MIME data, which were causing infinite -loops - -Pick-to: 6.6 6.5 -Change-Id: Ic207b1593a49c7bb88e4fd810d8f88aa630087ce -Reviewed-by: Thiago Macieira -Reviewed-by: David Faure ---- - src/corelib/mimetypes/qmimedatabase.cpp | 9 +++++++-- - src/corelib/mimetypes/qmimetype.cpp | 7 +++++-- - .../mimetypes/qmimedatabase/circular-inheritance.xml | 13 +++++++++++++ - .../qmimedatabase/qmimedatabase-cache/CMakeLists.txt | 1 + - .../qmimedatabase/qmimedatabase-xml/CMakeLists.txt | 1 + - .../corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp | 8 ++++++++ - 6 files changed, 35 insertions(+), 4 deletions(-) - create mode 100644 tests/auto/corelib/mimetypes/qmimedatabase/circular-inheritance.xml - -diff --git a/src/corelib/mimetypes/qmimedatabase.cpp b/src/corelib/mimetypes/qmimedatabase.cpp -index f06a434d55..eaeb079c97 100644 ---- a/src/corelib/mimetypes/qmimedatabase.cpp -+++ b/src/corelib/mimetypes/qmimedatabase.cpp -@@ -10,6 +10,7 @@ - #include "qmimeprovider_p.h" - #include "qmimetype_p.h" - -+#include - #include - - #include -@@ -503,6 +504,7 @@ QList QMimeDatabasePrivate::allMimeTypes() - bool QMimeDatabasePrivate::inherits(const QString &mime, const QString &parent) - { - const QString resolvedParent = resolveAlias(parent); -+ QDuplicateTracker seen; - std::stack toCheck; - toCheck.push(mime); - while (!toCheck.empty()) { -@@ -511,8 +513,11 @@ bool QMimeDatabasePrivate::inherits(const QString &mime, const QString &parent) - const QString mimeName = toCheck.top(); - toCheck.pop(); - const auto parentList = parents(mimeName); -- for (const QString &par : parentList) -- toCheck.push(resolveAlias(par)); -+ for (const QString &par : parentList) { -+ const QString resolvedPar = resolveAlias(par); -+ if (!seen.hasSeen(resolvedPar)) -+ toCheck.push(resolvedPar); -+ } - } - return false; - } -diff --git a/src/corelib/mimetypes/qmimetype.cpp b/src/corelib/mimetypes/qmimetype.cpp -index bed9e94364..ad3c484f30 100644 ---- a/src/corelib/mimetypes/qmimetype.cpp -+++ b/src/corelib/mimetypes/qmimetype.cpp -@@ -325,14 +325,17 @@ QStringList QMimeType::parentMimeTypes() const - static void collectParentMimeTypes(const QString &mime, QStringList &allParents) - { - const QStringList parents = QMimeDatabasePrivate::instance()->mimeParents(mime); -+ QStringList newParents; - for (const QString &parent : parents) { - // I would use QSet, but since order matters I better not -- if (!allParents.contains(parent)) -+ if (!allParents.contains(parent)) { - allParents.append(parent); -+ newParents.append(parent); -+ } - } - // We want a breadth-first search, so that the least-specific parent (octet-stream) is last - // This means iterating twice, unfortunately. -- for (const QString &parent : parents) -+ for (const QString &parent : newParents) - collectParentMimeTypes(parent, allParents); - } - -diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/circular-inheritance.xml b/tests/auto/corelib/mimetypes/qmimedatabase/circular-inheritance.xml -new file mode 100644 -index 0000000000..466f039803 ---- /dev/null -+++ b/tests/auto/corelib/mimetypes/qmimedatabase/circular-inheritance.xml -@@ -0,0 +1,13 @@ -+ -+ -+ -+ It's more accurate to say that ECMAScript is a subset of JavaScript -+ -+ -+ -+ -+ than to say that JavaScript is a subset of ECMAScript -+ -+ -+ -+ -diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt -index 9a70666b07..a267640a50 100644 ---- a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt -+++ b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt -@@ -31,5 +31,6 @@ qt_internal_add_test(tst_qmimedatabase-cache - #) - set(testdata_resource_files -+ "../circular-inheritance.xml" - "../invalid-magic1.xml" - "../invalid-magic2.xml" - "../invalid-magic3.xml" -diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt -index 205d3c362b..729ac3933a 100644 ---- a/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt -+++ b/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt -@@ -31,5 +31,6 @@ qt_internal_add_test(tst_qmimedatabase-xml - #) - set(testdata_resource_files -+ "../circular-inheritance.xml" - "../invalid-magic1.xml" - "../invalid-magic2.xml" - "../invalid-magic3.xml" -diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp -index 9bc3037c99..d7db4bb9bf 100644 ---- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp -+++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp -@@ -38,6 +38,7 @@ - "invalid-magic2.xml", - "invalid-magic3.xml", - "magic-and-hierarchy.xml", -+ "circular-inheritance.xml", - 0 }; - - static const auto s_resourcePrefix = ":/qt-project.org/qmime/"_L1; -@@ -388,6 +389,13 @@ void tst_QMimeDatabase::inheritance() - const QMimeType mswordTemplate = db.mimeTypeForName(QString::fromLatin1("application/msword-template")); - QVERIFY(mswordTemplate.isValid()); - QVERIFY(mswordTemplate.inherits(QLatin1String("application/msword"))); -+ -+ // Check that buggy type definitions that have circular inheritance don't cause an infinite -+ // loop, especially when resolving a conflict between the file's name and its contents -+ const QMimeType ecmascript = db.mimeTypeForName(QString::fromLatin1("application/ecmascript")); -+ QVERIFY(ecmascript.allAncestors().contains("text/plain")); -+ const QMimeType javascript = db.mimeTypeForFileNameAndData("xml.js", ""); -+ QVERIFY(javascript.inherits(QString::fromLatin1("text/javascript"))); - } - - void tst_QMimeDatabase::aliases() --- -cgit v1.2.3 - diff --git a/0001-Require-GCC-12.patch b/0001-Use-newer-GCC-on-Leap.patch similarity index 78% rename from 0001-Require-GCC-12.patch rename to 0001-Use-newer-GCC-on-Leap.patch index 4556704..8c03240 100644 --- a/0001-Require-GCC-12.patch +++ b/0001-Use-newer-GCC-on-Leap.patch @@ -1,7 +1,7 @@ -From fcd37b9845e4b4a362e7f2bb570955fad623bac8 Mon Sep 17 00:00:00 2001 +From 793c4c0d728024139083660a7f382f6d95853efe Mon Sep 17 00:00:00 2001 From: Christophe Marin Date: Sun, 6 Jun 2021 10:44:09 +0200 -Subject: [PATCH] Require GCC 12 on Leap +Subject: [PATCH] Use newer GCC on Leap.patch The default compiler in Leap doesn't match the Qt requirements. Use the latest compiler version available on Leap. @@ -13,7 +13,7 @@ Change-Id: I0c4ad87af4dd60d12fa09366eb9910edafcc9c4c 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mkspecs/common/g++-base.conf b/mkspecs/common/g++-base.conf -index d392879f66..5aac58a546 100644 +index d392879..ddca128 100644 --- a/mkspecs/common/g++-base.conf +++ b/mkspecs/common/g++-base.conf @@ -8,14 +8,14 @@ @@ -21,21 +21,21 @@ index d392879f66..5aac58a546 100644 # -QMAKE_COMPILER = gcc -+QMAKE_COMPILER = gcc-12 ++QMAKE_COMPILER = gcc-13 -QMAKE_CC = $${CROSS_COMPILE}gcc -+QMAKE_CC = $${CROSS_COMPILE}gcc-12 ++QMAKE_CC = $${CROSS_COMPILE}gcc-13 QMAKE_LINK_C = $$QMAKE_CC QMAKE_LINK_C_SHLIB = $$QMAKE_CC -QMAKE_CXX = $${CROSS_COMPILE}g++ -+QMAKE_CXX = $${CROSS_COMPILE}g++-12 ++QMAKE_CXX = $${CROSS_COMPILE}g++-13 QMAKE_LINK = $$QMAKE_CXX QMAKE_LINK_SHLIB = $$QMAKE_CXX diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf -index ae58326289..7bc6a54ccb 100644 +index ae58326..33cc860 100644 --- a/mkspecs/common/gcc-base.conf +++ b/mkspecs/common/gcc-base.conf @@ -124,8 +124,8 @@ QMAKE_CFLAGS_MIPS_DSPR2 += -mdspr2 @@ -44,11 +44,11 @@ index ae58326289..7bc6a54ccb 100644 # Wrapper tools that understand .o/.a files with GIMPLE instead of machine code -QMAKE_AR_LTCG = gcc-ar cqs -QMAKE_NM_LTCG = gcc-nm -P -+QMAKE_AR_LTCG = gcc-ar-12 cqs -+QMAKE_NM_LTCG = gcc-nm-12 -P ++QMAKE_AR_LTCG = gcc-ar-13 cqs ++QMAKE_NM_LTCG = gcc-nm-13 -P QMAKE_RANLIB_LTCG = true # No need to run since gcc-ar has "s" QMAKE_LINK_OBJECT_SCRIPT = object_script -- -2.41.0 +2.43.0 diff --git a/qt6-base.changes b/qt6-base.changes index 0eb47c0..63f537c 100644 --- a/qt6-base.changes +++ b/qt6-base.changes @@ -1,7 +1,62 @@ +------------------------------------------------------------------- +Tue Mar 26 14:25:22 UTC 2024 - Christophe Marin + +- Update to 6.6.3: + * https://www.qt.io/blog/qt-6.6.3-released + * Includes fix for issue where the wasm component may access + QNetworkReply header data via a dangling pointer + (CVE-2024-30161, bsc#1221926, QTBUG-122893) +- Make libQt6PrintSupport6 require qt6-printsupport-cups + (boo#1221576) + +------------------------------------------------------------------- +Thu Mar 21 14:56:42 UTC 2024 - Christophe Marin + +- Replace the postgresql-server build dependency with the client library + +------------------------------------------------------------------- +Wed Feb 14 16:53:08 UTC 2024 - Christophe Marin + +- Update to 6.6.2 + * https://www.qt.io/blog/qt-6.6.2-released + * Fix for potential buffer overflow when reading KTX + images (boo#1219996, CVE-2024-25580) +- Drop patches, merged upstream: + * 0001-QMimeDatabase-handle-buggy-type-definitions.patch + * 0001-QMimeDatabase-collect-glob-patterns-from.patch + * 0001-HPack-fix-a-Yoda-Condition.patch + * 0002-HPack-fix-incorrect-integer-overflow-check.patch + * 0001-Http2-fix-potential-overflow-in-assemble_hpack_block.patch + +------------------------------------------------------------------- +Wed Jan 31 14:51:31 UTC 2024 - Christophe Marin + +- Switch to the latest GCC version available in Leap +- Replace 0001-Require-GCC-12.patch with 0001-Use-newer-GCC-on-Leap.patch + +------------------------------------------------------------------- +Wed Jan 3 08:52:06 UTC 2024 - Antonio Larrosa + +- Add upstream patches to fix an incorrect integer overflow check + (boo#1218413, CVE-2023-51714): + * 0001-HPack-fix-a-Yoda-Condition.patch + * 0002-HPack-fix-incorrect-integer-overflow-check.patch +- Add upstream patch to fix a potential overflow in + assemble_hpack_block(): + * 0001-Http2-fix-potential-overflow-in-assemble_hpack_block.patch + +------------------------------------------------------------------- +Sat Dec 30 14:51:31 UTC 2023 - Luca Beltrame + +- Add upstream patch for a bug in QMimeDatabase which makes + impossible to save JPEG files in Qt6 applications: + * 0001-QMimeDatabase-collect-glob-patterns-from.patch + * https://code.qt.io/cgit/qt/qtbase.git/commit/?id=4e9944e6c8a456353d243ab268cb0f01ff006faa + ------------------------------------------------------------------- Mon Dec 4 19:11:49 UTC 2023 - Kacper Koniuszy -- Add upstream patch for a bug in QMimeDatabase that causes some +- Add upstream patch for a bug in QMimeDatabase that causes some applications to hang: * 0001-QMimeDatabase-handle-buggy-type-definitions.patch * https://code.qt.io/cgit/qt/qtbase.git/commit/?id=54656da9ace06caf4a0eeb1832989c0ab211a4a0 @@ -131,6 +186,7 @@ Mon Apr 3 10:01:48 UTC 2023 - Christophe Marin - Update to 6.5.0 * https://www.qt.io/blog/qt-6.5-lts-released + * Includes fix for boo#1215178, QTBUG-109474, QTCREATORBUG-28593 - Drop patch, merged upstream: * 0001-Avoid-resetting-CMAKE_AUTOMOC_MACRO_NAMES.patch @@ -147,7 +203,7 @@ Thu Mar 16 09:59:57 UTC 2023 - Christophe Marin ------------------------------------------------------------------- Wed Feb 8 17:48:36 UTC 2023 - Christophe Marin -- Fix a possible DOS in the Qt ODBC driver plugin (CVE-2023-24607, +- Fix a possible DOS in the Qt ODBC driver plugin (CVE-2023-24607, bsc#1209616): * CVE-2023-24607-qtbase-6.4.diff diff --git a/qt6-base.spec b/qt6-base.spec index 044501f..9d1d599 100644 --- a/qt6-base.spec +++ b/qt6-base.spec @@ -1,7 +1,7 @@ # # spec file for package qt6-base # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,7 +16,7 @@ # -%define real_version 6.6.1 +%define real_version 6.6.3 %define short_version 6.6 %define tar_name qtbase-everywhere-src %define tar_suffix %{nil} @@ -30,7 +30,7 @@ %global with_gles 1 %endif Name: qt6-base%{?pkg_suffix} -Version: 6.6.1 +Version: 6.6.3 Release: 0 Summary: Qt 6 core components (Core, Gui, Widgets, Network...) # Legal: qtpaths is BSD-3-Clause @@ -39,13 +39,12 @@ URL: https://www.qt.io Source: https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz Source99: qt6-base-rpmlintrc # Patches 0-100 are upstream patches # -Patch0: 0001-QMimeDatabase-handle-buggy-type-definitions.patch # Patches 100-200 are openSUSE and/or non-upstream(able) patches # Patch100: 0001-Tell-the-truth-about-private-API.patch # No need to pollute the library dir with object files, install them in the qt6 subfolder Patch101: 0001-CMake-Install-objects-files-into-ARCHDATADIR.patch %if 0%{?suse_version} == 1500 -Patch102: 0001-Require-GCC-12.patch +Patch102: 0001-Use-newer-GCC-on-Leap.patch %endif Patch103: 0001-Don-t-strip-binaries-when-building-with-qmake.patch ## @@ -53,8 +52,8 @@ BuildRequires: cmake >= 3.18.3 BuildRequires: cups-devel # The default GCC version in Leap 15 is too old %if 0%{?suse_version} == 1500 -BuildRequires: gcc12-PIE -BuildRequires: gcc12-c++ +BuildRequires: gcc13-PIE +BuildRequires: gcc13-c++ %else BuildRequires: gcc-c++ %endif @@ -66,7 +65,6 @@ BuildRequires: libproxy-devel BuildRequires: pcre2-devel BuildRequires: perl BuildRequires: pkgconfig -BuildRequires: postgresql-server-devel BuildRequires: qt6-macros BuildRequires: xmlstarlet BuildRequires: cmake(double-conversion) @@ -87,6 +85,7 @@ BuildRequires: pkgconfig(libbrotlienc) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libinput) BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libpq) BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libturbojpeg) BuildRequires: pkgconfig(libudev) @@ -235,8 +234,8 @@ Requires: libQt6Core6 = %{version} Requires: qt6-base-common-devel = %{version} %if 0%{?suse_version} == 1500 # Some public classes require C++ 17 features -Requires: gcc12-PIE -Requires: gcc12-c++ +Requires: gcc13-PIE +Requires: gcc13-c++ %endif %description -n qt6-core-devel @@ -430,7 +429,7 @@ Development files for the Qt 6 OpenGLWidgets library. %package -n libQt6PrintSupport6 Summary: Qt 6 PrintSupport library Requires: libQt6Widgets6 = %{version} -Recommends: qt6-printsupport-cups = %{version} +Requires: qt6-printsupport-cups = %{version} %description -n libQt6PrintSupport6 An abstraction over the platform-specific printing systems. Using @@ -580,6 +579,7 @@ BuildArch: noarch %description -n qt6-docs-common This package contains common files used for building Qt documentation. + ### Static libraries ### %package -n qt6-exampleicons-devel-static @@ -638,6 +638,7 @@ Requires: qt6-platformsupport-devel-static = %{version} This package provides private headers of libQt6PlatformSupport that do not have any ABI or API guarantees. + ### Plugins ### %package -n qt6-networkinformation-glib diff --git a/qtbase-everywhere-src-6.6.1.tar.xz b/qtbase-everywhere-src-6.6.1.tar.xz deleted file mode 100644 index ce55da5..0000000 --- a/qtbase-everywhere-src-6.6.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:450c5b4677b2fe40ed07954d7f0f40690068e80a94c9df86c2c905ccd59d02f7 -size 48370760 diff --git a/qtbase-everywhere-src-6.6.3.tar.xz b/qtbase-everywhere-src-6.6.3.tar.xz new file mode 100644 index 0000000..95efa81 --- /dev/null +++ b/qtbase-everywhere-src-6.6.3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0493fd0b380c4edf8872f011a7f26d245aa4cdd75b349904ef340a22dedf7462 +size 48784716