diff --git a/0001-Improve-handling-of-malformed-numeric-values-in-svg-.patch b/0001-Improve-handling-of-malformed-numeric-values-in-svg-.patch deleted file mode 100644 index 840b3a5..0000000 --- a/0001-Improve-handling-of-malformed-numeric-values-in-svg-.patch +++ /dev/null @@ -1,41 +0,0 @@ -From aceea78cc05ac8ff947cee9de8149b48771781a8 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland -Date: Tue, 1 Dec 2020 14:39:59 +0100 -Subject: [PATCH 1/4] Improve handling of malformed numeric values in svg files - -Catch cases where the input is not containable in a qreal, and avoid -passing on inf values. - -Change-Id: I1ab8932d94473916815385240c29e03afb0e0c9e -Reviewed-by: Robert Loehning -Reviewed-by: Allan Sandfeld Jensen -(cherry picked from commit 428d56da9d5ed9bda51f7cc3c144996fb3a6a285) -Reviewed-by: Qt Cherry-pick Bot ---- - src/svg/qsvghandler.cpp | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index c937254..b3d9aaf 100644 ---- a/src/svg/qsvghandler.cpp -+++ b/src/svg/qsvghandler.cpp -@@ -65,6 +65,7 @@ - #include "private/qmath_p.h" - - #include "float.h" -+#include - - QT_BEGIN_NAMESPACE - -@@ -672,6 +673,8 @@ static qreal toDouble(const QChar *&str) - val = -val; - } else { - val = QByteArray::fromRawData(temp, pos).toDouble(); -+ if (qFpClassify(val) != FP_NORMAL) -+ val = 0; - } - return val; - --- -2.25.1 - diff --git a/0001-Revert-Bump-version.patch b/0001-Revert-Bump-version.patch new file mode 100644 index 0000000..d11d612 --- /dev/null +++ b/0001-Revert-Bump-version.patch @@ -0,0 +1,23 @@ +From 8c975330fa1062151bd1a7bce802d70ada3d9038 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Mon, 21 Jun 2021 18:22:56 +0200 +Subject: [PATCH] Revert "Bump version" + +This reverts commit 9aac88424a1b76e0198b52437af58a6d94aff8e9. +--- + .qmake.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/.qmake.conf b/.qmake.conf +index bbf484f..ba84e23 100644 +--- a/.qmake.conf ++++ b/.qmake.conf +@@ -3,4 +3,4 @@ load(qt_build_config) + CONFIG += warning_clean + DEFINES += QT_NO_FOREACH + +-MODULE_VERSION = 5.15.3 ++MODULE_VERSION = 5.15.2 +-- +2.20.1 + diff --git a/0002-Clamp-parsed-doubles-to-float-representable-values.patch b/0002-Clamp-parsed-doubles-to-float-representable-values.patch deleted file mode 100644 index 3f02f64..0000000 --- a/0002-Clamp-parsed-doubles-to-float-representable-values.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 95990cbeebc0ab9959e2a925a93ad4897416bbb7 Mon Sep 17 00:00:00 2001 -From: Allan Sandfeld Jensen -Date: Thu, 4 Mar 2021 14:28:48 +0100 -Subject: [PATCH 2/4] Clamp parsed doubles to float representable values -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Parts of our rendering assumes incoming doubles can still be sane -floats. - -Fixes: QTBUG-91507 -Change-Id: I7086a121e1b5ed47695a1251ea90e774dd8f148d -Reviewed-by: Robert Löhning -Reviewed-by: Allan Sandfeld Jensen -Reviewed-by: Mårten Nordheim -(cherry picked from commit bfd6ee0d8cf34b63d32adf10ed93daa0086b359f) -Reviewed-by: Qt Cherry-pick Bot ---- - src/svg/qsvghandler.cpp | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index b3d9aaf..9dac05c 100644 ---- a/src/svg/qsvghandler.cpp -+++ b/src/svg/qsvghandler.cpp -@@ -673,7 +673,8 @@ static qreal toDouble(const QChar *&str) - val = -val; - } else { - val = QByteArray::fromRawData(temp, pos).toDouble(); -- if (qFpClassify(val) != FP_NORMAL) -+ // Do not tolerate values too wild to be represented normally by floats -+ if (qFpClassify(float(val)) != FP_NORMAL) - val = 0; - } - return val; -@@ -3046,6 +3047,8 @@ static QSvgStyleProperty *createRadialGradientNode(QSvgNode *node, - ncy = toDouble(cy); - if (!r.isEmpty()) - nr = toDouble(r); -+ if (nr < 0.5) -+ nr = 0.5; - - qreal nfx = ncx; - if (!fx.isEmpty()) --- -2.25.1 - diff --git a/0003-Avoid-buffer-overflow-in-isSupportedSvgFeature.patch b/0003-Avoid-buffer-overflow-in-isSupportedSvgFeature.patch deleted file mode 100644 index f38f538..0000000 --- a/0003-Avoid-buffer-overflow-in-isSupportedSvgFeature.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 1c2072ad16e0097c15df701dc22f07bf481fc4ec Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Robert=20L=C3=B6hning?= -Date: Wed, 17 Feb 2021 19:20:42 +0100 -Subject: [PATCH 3/4] Avoid buffer overflow in isSupportedSvgFeature - -Fixes oss-fuzz issue 29873. - -Pick-to: 6.0 6.1 -Change-Id: I382683aa2d7d3cf2d05a0b8c41ebf21d032fbd7c -Reviewed-by: Eirik Aavitsland -(cherry picked from commit afde7ca3a40f524e40052df696f74190452b22cb) ---- - src/svg/qsvgstructure.cpp | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/svg/qsvgstructure.cpp b/src/svg/qsvgstructure.cpp -index b89608b..89c9e4e 100644 ---- a/src/svg/qsvgstructure.cpp -+++ b/src/svg/qsvgstructure.cpp -@@ -255,9 +255,13 @@ inline static bool isSupportedSvgFeature(const QString &str) - }; - - if (str.length() <= MAX_WORD_LENGTH && str.length() >= MIN_WORD_LENGTH) { -+ const char16_t unicode44 = str.at(44).unicode(); -+ const char16_t unicode45 = str.at(45).unicode(); -+ if (unicode44 >= sizeof(asso_values) || unicode45 >= sizeof(asso_values)) -+ return false; - const int key = str.length() -- + asso_values[str.at(45).unicode()] -- + asso_values[str.at(44).unicode()]; -+ + asso_values[unicode45] -+ + asso_values[unicode44]; - if (key <= MAX_HASH_VALUE && key >= 0) - return str == QLatin1String(wordlist[key]); - } --- -2.25.1 - diff --git a/0004-Make-image-handler-accept-UTF-16-UTF-32-encoded-SVGs.patch b/0004-Make-image-handler-accept-UTF-16-UTF-32-encoded-SVGs.patch deleted file mode 100644 index c21d9d2..0000000 --- a/0004-Make-image-handler-accept-UTF-16-UTF-32-encoded-SVGs.patch +++ /dev/null @@ -1,201 +0,0 @@ -From cfc616978b52a396b2ef6900546f7fc086d7cab3 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland -Date: Thu, 8 Apr 2021 13:19:52 +0200 -Subject: [PATCH 4/4] Make image handler accept UTF-16/UTF-32 encoded SVGs - -The canRead() header checks assumed 8 bit encoding. - -Pick-to: 6.1 6.0 5.15 -Fixes: QTBUG-90744 -Change-Id: Ibe934fe9ed31b89ee0fbfc4562aa66ab1b359225 -Reviewed-by: Allan Sandfeld Jensen -(cherry picked from commit 45fb1f07eaa984af40fca9f12b8f3d27f7b0e9ac) ---- - .../imageformats/svg/qsvgiohandler.cpp | 37 +++++++++++------- - tests/auto/qsvgplugin/simple_Utf16BE.svg | Bin 0 -> 228 bytes - tests/auto/qsvgplugin/simple_Utf16LE.svg | Bin 0 -> 228 bytes - tests/auto/qsvgplugin/simple_Utf32BE.svg | Bin 0 -> 456 bytes - tests/auto/qsvgplugin/simple_Utf32LE.svg | Bin 0 -> 456 bytes - tests/auto/qsvgplugin/simple_Utf8.svg | 3 ++ - tests/auto/qsvgplugin/tst_qsvgplugin.cpp | 32 +++++++++++++++ - 7 files changed, 57 insertions(+), 15 deletions(-) - create mode 100644 tests/auto/qsvgplugin/simple_Utf16BE.svg - create mode 100644 tests/auto/qsvgplugin/simple_Utf16LE.svg - create mode 100644 tests/auto/qsvgplugin/simple_Utf32BE.svg - create mode 100644 tests/auto/qsvgplugin/simple_Utf32LE.svg - create mode 100644 tests/auto/qsvgplugin/simple_Utf8.svg - -diff --git a/src/plugins/imageformats/svg/qsvgiohandler.cpp b/src/plugins/imageformats/svg/qsvgiohandler.cpp -index bd39b2a..4136aaf 100644 ---- a/src/plugins/imageformats/svg/qsvgiohandler.cpp -+++ b/src/plugins/imageformats/svg/qsvgiohandler.cpp -@@ -118,6 +118,24 @@ QSvgIOHandler::~QSvgIOHandler() - delete d; - } - -+static bool isPossiblySvg(QIODevice *device, bool *isCompressed = nullptr) -+{ -+ constexpr int bufSize = 64; -+ char buf[bufSize]; -+ const qint64 readLen = device->peek(buf, bufSize); -+ if (readLen < 8) -+ return false; -+# ifndef QT_NO_COMPRESS -+ if (quint8(buf[0]) == 0x1f && quint8(buf[1]) == 0x8b) { -+ if (isCompressed) -+ *isCompressed = true; -+ return true; -+ } -+# endif -+ QTextStream str(QByteArray::fromRawData(buf, readLen)); -+ QByteArray ba = str.read(16).trimmed().toLatin1(); -+ return ba.startsWith("loaded && !d->readDone) - return true; // Will happen if we have been asked for the size - -- QByteArray buf = device()->peek(16); --#ifndef QT_NO_COMPRESS -- if (buf.startsWith("\x1f\x8b")) { -- setFormat("svgz"); -- return true; -- } else --#endif -- if (buf.contains("peek(16); -- return --#ifndef QT_NO_COMPRESS -- buf.startsWith("\x1f\x8b") || --#endif -- buf.contains("ZBuq%=W%m0F_LN&(W%dt -i+N`XO_n%MZY8v|_=r&6EzpW7h!FvAF8>RhG#ry&V93m0` - -literal 0 -HcmV?d00001 - -diff --git a/tests/auto/qsvgplugin/simple_Utf16LE.svg b/tests/auto/qsvgplugin/simple_Utf16LE.svg -new file mode 100644 -index 0000000000000000000000000000000000000000..cdbeda92a5145faf70fcc8dcdf034141a66f59cf -GIT binary patch -literal 228 -zcmY+8!3x4a3`F1AuUP86tCe14^=FD(h1JSdZ2ft4HWWby5+)?`@_7eFp7c1?6It%U -zz>NbHTWU7yj+rY-)6wQ<9@3pXUYbm`>Q4KEGI~uLT^9Kzzv9SBNsd4#MpjKCI`!F7 -h+lAHf`t#XbLu;Qz-6pC0w>Cl~S}%Wkql6!|Fux@+A`$=q - -literal 0 -HcmV?d00001 - -diff --git a/tests/auto/qsvgplugin/simple_Utf32BE.svg b/tests/auto/qsvgplugin/simple_Utf32BE.svg -new file mode 100644 -index 0000000000000000000000000000000000000000..0d5d02c1ba98a60908ca852692bf5f1124d4b64b -GIT binary patch -literal 456 -zcmaKnNeV(i3nXu|-y(68?xK41?!u-Dn_-;iG`C*lNpl{+zUr}+rXy{itj**^qtCjK?` -zt8ES~h>9K;pbvMMt5J^uzSW*u$K*|4)}Mds?#x;BIj@d@6?oTsl6@WW^k9$VJ7@Kl -LUi9$m^;`P@=Ncjs - -literal 0 -HcmV?d00001 - -diff --git a/tests/auto/qsvgplugin/simple_Utf32LE.svg b/tests/auto/qsvgplugin/simple_Utf32LE.svg -new file mode 100644 -index 0000000000000000000000000000000000000000..58a71596656a79d9540b6bbef92e6b40aec46871 -GIT binary patch -literal 456 -zcmaKnNeV(i3mv7e>&BVSN|k6ArKkd!5bxE%~i-CeC0`c@PtKnoq#oyXsJz{bTTE;$K_8 -z+8XFUspxSD`f!)I8ueJfx7t(dl)UZB`s+{KojI#M=habQ4c_&hWM7XwJ=i1p&RM;s -K7d`xX&Ds}BU?LI# - -literal 0 -HcmV?d00001 - -diff --git a/tests/auto/qsvgplugin/simple_Utf8.svg b/tests/auto/qsvgplugin/simple_Utf8.svg -new file mode 100644 -index 0000000..2052c48 ---- /dev/null -+++ b/tests/auto/qsvgplugin/simple_Utf8.svg -@@ -0,0 +1,3 @@ -+ -+ -+ -diff --git a/tests/auto/qsvgplugin/tst_qsvgplugin.cpp b/tests/auto/qsvgplugin/tst_qsvgplugin.cpp -index e1f84f3..73bbe8b 100644 ---- a/tests/auto/qsvgplugin/tst_qsvgplugin.cpp -+++ b/tests/auto/qsvgplugin/tst_qsvgplugin.cpp -@@ -61,6 +61,8 @@ private slots: - void checkSize_data(); - void checkSize(); - void checkImageInclude(); -+ void encodings_data(); -+ void encodings(); - }; - - -@@ -145,6 +147,36 @@ void tst_QSvgPlugin::checkImageInclude() - logMessages.clear(); - } - -+void tst_QSvgPlugin::encodings_data() -+{ -+ QTest::addColumn("filename"); -+ -+ QTest::newRow("utf-8") << QFINDTESTDATA("simple_Utf8.svg"); -+ QTest::newRow("utf-16LE") << QFINDTESTDATA("simple_Utf16LE.svg"); -+ QTest::newRow("utf-16BE") << QFINDTESTDATA("simple_Utf16BE.svg"); -+ QTest::newRow("utf-32LE") << QFINDTESTDATA("simple_Utf32LE.svg"); -+ QTest::newRow("utf-32BE") << QFINDTESTDATA("simple_Utf32BE.svg"); -+} -+ -+void tst_QSvgPlugin::encodings() -+{ -+ QFETCH(QString, filename); -+ -+ { -+ QFile file(filename); -+ file.open(QIODevice::ReadOnly); -+ QVERIFY(QSvgIOHandler::canRead(&file)); -+ } -+ -+ QFile file(filename); -+ file.open(QIODevice::ReadOnly); -+ QSvgIOHandler plugin; -+ plugin.setDevice(&file); -+ QVERIFY(plugin.canRead()); -+ QImage img; -+ QVERIFY(plugin.read(&img)); -+ QCOMPARE(img.size(), QSize(50, 50)); -+} - - QTEST_MAIN(tst_QSvgPlugin) - #include "tst_qsvgplugin.moc" --- -2.25.1 - diff --git a/_service b/_service new file mode 100644 index 0000000..14f1d93 --- /dev/null +++ b/_service @@ -0,0 +1,18 @@ + + + enable + 5.15.2+kde@TAG_OFFSET@ + https://invent.kde.org/qt/qt/qtsvg.git + git + qtsvg-everywhere-src + kde/5.15 + v5.15.2 + enable + + + + + *.tar + xz + + diff --git a/_servicedata b/_servicedata new file mode 100644 index 0000000..9cf4aaa --- /dev/null +++ b/_servicedata @@ -0,0 +1,4 @@ + + + https://invent.kde.org/qt/qt/qtsvg.git + cfc616978b52a396b2ef6900546f7fc086d7cab3 \ No newline at end of file diff --git a/libqt5-qtsvg.changes b/libqt5-qtsvg.changes index bb53906..ac19a7f 100644 --- a/libqt5-qtsvg.changes +++ b/libqt5-qtsvg.changes @@ -1,3 +1,23 @@ +------------------------------------------------------------------- +Mon Jun 21 16:22:56 UTC 2021 - Fabian Vogt + +- Switch to KDE's maintenance branch +- Update to version 5.15.2+kde7: + * Make image handler accept UTF-16/UTF-32 encoded SVGs + * Avoid buffer overflow in isSupportedSvgFeature + * Clamp parsed doubles to float representable values + * Improve handling of malformed numeric values in svg files + * Bump version + * Add changes file for Qt 5.15.2 + * Add changes file for Qt 5.12.10 +- Add patch to reset version to 5.15.2: + * 0001-Revert-Bump-version.patch +- Drop patches, now upstream: + * 0001-Improve-handling-of-malformed-numeric-values-in-svg-.patch + * 0002-Clamp-parsed-doubles-to-float-representable-values.patch + * 0003-Avoid-buffer-overflow-in-isSupportedSvgFeature.patch + * 0004-Make-image-handler-accept-UTF-16-UTF-32-encoded-SVGs.patch + ------------------------------------------------------------------- Fri Apr 16 09:37:36 UTC 2021 - Fabian Vogt diff --git a/libqt5-qtsvg.spec b/libqt5-qtsvg.spec index eb3b1fc..c863a77 100644 --- a/libqt5-qtsvg.spec +++ b/libqt5-qtsvg.spec @@ -16,30 +16,27 @@ # -%define qt5_snapshot 0 +%define qt5_snapshot 1 %define libname libQt5Svg5 %define base_name libqt5 %define real_version 5.15.2 %define so_version 5.15.2 -%define tar_version qtsvg-everywhere-src-5.15.2 +%define tar_version qtsvg-everywhere-src-%{version} Name: libqt5-qtsvg -Version: 5.15.2 +Version: 5.15.2+kde7 Release: 0 Summary: Qt 5 SVG Library License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later) Group: Development/Libraries/X11 URL: https://www.qt.io -Source: https://download.qt.io/official_releases/qt/5.15/%{real_version}/submodules/%{tar_version}.tar.xz +Source: %{tar_version}.tar.xz Source1: baselibs.conf -# PATCH-FIX-UPSTREAM -Patch1: 0001-Improve-handling-of-malformed-numeric-values-in-svg-.patch -Patch2: 0002-Clamp-parsed-doubles-to-float-representable-values.patch -Patch3: 0003-Avoid-buffer-overflow-in-isSupportedSvgFeature.patch -Patch4: 0004-Make-image-handler-accept-UTF-16-UTF-32-encoded-SVGs.patch -BuildRequires: libQt5Core-private-headers-devel >= %{version} -BuildRequires: libQt5Gui-private-headers-devel >= %{version} -BuildRequires: libQt5Widgets-private-headers-devel >= %{version} -BuildRequires: libqt5-qtbase-devel >= %{version} +# PATCH-FIX-OPENSUSE +Patch1: 0001-Revert-Bump-version.patch +BuildRequires: libQt5Core-private-headers-devel >= %{real_version} +BuildRequires: libQt5Gui-private-headers-devel >= %{real_version} +BuildRequires: libQt5Widgets-private-headers-devel >= %{real_version} +BuildRequires: libqt5-qtbase-devel >= %{real_version} %if %{qt5_snapshot} #to create the forwarding headers BuildRequires: perl @@ -47,15 +44,13 @@ BuildRequires: perl BuildRequires: pkgconfig BuildRequires: xz BuildRequires: pkgconfig(zlib) -# Use git to apply the patches, Patch4 contains binary diffs -BuildRequires: git-core %description The Qt SVG module provides functionality for displaying SVG images as a widget, and to create SVG files using drawing commands. %prep -%autosetup -p1 -S git -n %{tar_version} +%autosetup -p1 -n %{tar_version} %package -n %{libname} Summary: Qt 5 SVG Library diff --git a/qtsvg-everywhere-src-5.15.2+kde7.obscpio b/qtsvg-everywhere-src-5.15.2+kde7.obscpio new file mode 100644 index 0000000..611d101 --- /dev/null +++ b/qtsvg-everywhere-src-5.15.2+kde7.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e6fd8a5b6f790c5fb4f11c584fd0d5f3df8024cbfe33508bb50ea106e01af56 +size 14294030 diff --git a/qtsvg-everywhere-src-5.15.2.tar.xz b/qtsvg-everywhere-src-5.15.2.tar.xz deleted file mode 100644 index 3163a5a..0000000 --- a/qtsvg-everywhere-src-5.15.2.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bc3c2c1bc2671e9c67d4205589a8309b57903721ad14c60ea21a5d06acb585e -size 1886268 diff --git a/qtsvg-everywhere-src.obsinfo b/qtsvg-everywhere-src.obsinfo new file mode 100644 index 0000000..0a90e5e --- /dev/null +++ b/qtsvg-everywhere-src.obsinfo @@ -0,0 +1,5 @@ +name: qtsvg-everywhere-src +version: 5.15.2+kde7 +mtime: 1618568232 +commit: cfc616978b52a396b2ef6900546f7fc086d7cab3 +