qt5-5.15.11

This commit is contained in:
Rmys
2023-10-07 15:25:31 +03:00
parent 4f3689b703
commit 4a4a591d08
18 changed files with 261 additions and 218 deletions
+5 -81
View File
@@ -35,7 +35,7 @@ index fd0a3fa..fcffbe8 100644
QHash<QChar, QSvgGlyph> m_glyphs;
};
diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
index b2227b6..222b6d8 100644
index c229c3b..222b6d8 100644
--- a/src/svg/qsvghandler.cpp
+++ b/src/svg/qsvghandler.cpp
@@ -1393,9 +1393,10 @@ static void parseFont(QSvgNode *node,
@@ -52,16 +52,7 @@ index b2227b6..222b6d8 100644
}
break;
default:
@@ -2513,6 +2514,8 @@ static bool parseAnimateTransformNode(QSvgNode *parent,
++s;
}
}
+ if (vals.count() % 3 != 0)
+ return false;
bool ok = true;
int begin = parseClockValue(beginStr, &ok);
@@ -2576,6 +2579,8 @@ static QSvgNode *createCircleNode(QSvgNode *parent,
@@ -2578,6 +2579,8 @@ static QSvgNode *createCircleNode(QSvgNode *parent,
qreal ncx = toDouble(cx);
qreal ncy = toDouble(cy);
qreal nr = toDouble(r);
@@ -70,7 +61,7 @@ index b2227b6..222b6d8 100644
QRectF rect(ncx-nr, ncy-nr, nr*2, nr*2);
QSvgNode *circle = new QSvgCircle(parent, rect);
@@ -2666,7 +2671,7 @@ static bool parseFontFaceNode(QSvgStyleProperty *parent,
@@ -2668,7 +2671,7 @@ static bool parseFontFaceNode(QSvgStyleProperty *parent,
qreal unitsPerEm = toDouble(unitsPerEmStr);
if (!unitsPerEm)
@@ -79,7 +70,7 @@ index b2227b6..222b6d8 100644
if (!name.isEmpty())
font->setFamilyName(name);
@@ -3046,15 +3051,16 @@ static QSvgStyleProperty *createRadialGradientNode(QSvgNode *node,
@@ -3048,15 +3051,16 @@ static QSvgStyleProperty *createRadialGradientNode(QSvgNode *node,
qreal ncx = 0.5;
qreal ncy = 0.5;
@@ -99,7 +90,7 @@ index b2227b6..222b6d8 100644
qreal nfx = ncx;
if (!fx.isEmpty())
@@ -3350,7 +3356,9 @@ static QSvgNode *createTextNode(QSvgNode *parent,
@@ -3352,7 +3356,9 @@ static QSvgNode *createTextNode(QSvgNode *parent,
//### editable and rotate not handled
QSvgHandler::LengthType type;
qreal nx = parseLength(x, type, handler);
@@ -129,70 +120,3 @@ index b89608b..89c9e4e 100644
if (key <= MAX_HASH_VALUE && key >= 0)
return str == QLatin1String(wordlist[key]);
}
diff --git a/src/svg/qsvgtinydocument.cpp b/src/svg/qsvgtinydocument.cpp
index 63d0797..19e7154 100644
--- a/src/svg/qsvgtinydocument.cpp
+++ b/src/svg/qsvgtinydocument.cpp
@@ -433,8 +433,16 @@ void QSvgTinyDocument::draw(QPainter *p, QSvgExtraStates &)
draw(p);
}
+static bool isValidMatrix(const QTransform &transform)
+{
+ qreal determinant = transform.determinant();
+ return qIsFinite(determinant);
+}
+
void QSvgTinyDocument::mapSourceToTarget(QPainter *p, const QRectF &targetRect, const QRectF &sourceRect)
{
+ QTransform oldTransform = p->worldTransform();
+
QRectF target = targetRect;
if (target.isEmpty()) {
QPaintDevice *dev = p->device();
@@ -487,6 +495,9 @@ void QSvgTinyDocument::mapSourceToTarget(QPainter *p, const QRectF &targetRect,
}
#endif
}
+
+ if (!isValidMatrix(p->worldTransform()))
+ p->setWorldTransform(oldTransform);
}
QRectF QSvgTinyDocument::boundsOnElement(const QString &id) const
diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
index 36c76ec..db71e02 100644
--- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
@@ -86,6 +86,8 @@ private slots:
void oss_fuzz_23731();
void oss_fuzz_24131();
void oss_fuzz_24738();
+ void illegalAnimateTransform_data();
+ void illegalAnimateTransform();
#ifndef QT_NO_COMPRESS
void testGzLoading();
@@ -1646,5 +1648,22 @@ void tst_QSvgRenderer::oss_fuzz_24738()
QSvgRenderer().load(QByteArray("<svg><path d=\"a 2 1e-212.....\">"));
}
+void tst_QSvgRenderer::illegalAnimateTransform_data()
+{
+ QTest::addColumn<QByteArray>("svg");
+
+ QTest::newRow("case1") << QByteArray("<svg><animateTransform type=\"rotate\" begin=\"1\" dur=\"2\" values=\"8,0,5,0\">");
+ QTest::newRow("case2") << QByteArray("<svg><animateTransform type=\"rotate\" begin=\"1\" dur=\"2\" values=\"1,2\">");
+ QTest::newRow("case3") << QByteArray("<svg><animateTransform type=\"rotate\" begin=\"1\" dur=\"2\" from=\".. 5 2\" to=\"f\">");
+ QTest::newRow("case4") << QByteArray("<svg><animateTransform type=\"scale\" begin=\"1\" dur=\"2\" by=\"--,..\">");
+}
+
+void tst_QSvgRenderer::illegalAnimateTransform()
+{
+ QFETCH(QByteArray, svg);
+ QSvgRenderer renderer;
+ QVERIFY(!renderer.load(svg)); // also shouldn't assert
+}
+
QTEST_MAIN(tst_QSvgRenderer)
#include "tst_qsvgrenderer.moc"
+14 -7
View File
@@ -9,12 +9,12 @@
<License>LGPLv2.1-linking-exception</License>
<Summary>Classes for displaying the contents of SVG files</Summary>
<Description>Classes for displaying the contents of SVG files</Description>
<Archive sha1sum="e24ebdebf73645920f7ddecda7aaa81c9aba00b6" type="tarxz">http://download.qt.io/official_releases/qt/5.15/5.15.10/submodules/qtsvg-everywhere-opensource-src-5.15.10.tar.xz</Archive>
<Archive sha1sum="0c253e570b630ad45026a77ff8296d56fb7330a1" type="tarxz">http://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtsvg-everywhere-opensource-src-5.15.11.tar.xz</Archive>
<BuildDependencies>
<Dependency versionFrom="13.0.4">mesa-devel</Dependency>
<Dependency versionFrom="5.15.10">qt5-base-devel</Dependency>
<Dependency versionFrom="5.15.10">qt5-assistant-devel</Dependency>
<Dependency versionFrom="5.15.10">qt5-sql-sqlite</Dependency>
<Dependency versionFrom="5.15.11">qt5-base-devel</Dependency>
<Dependency versionFrom="5.15.11">qt5-assistant-devel</Dependency>
<Dependency versionFrom="5.15.11">qt5-sql-sqlite</Dependency>
<Dependency>zlib-devel</Dependency>
</BuildDependencies>
<Patches>
@@ -25,7 +25,7 @@
<Name>qt5-svg</Name>
<RuntimeDependencies>
<Dependency>libgcc</Dependency>
<Dependency versionFrom="5.15.10">qt5-base</Dependency>
<Dependency versionFrom="5.15.11">qt5-base</Dependency>
<Dependency>zlib</Dependency>
</RuntimeDependencies>
<Files>
@@ -39,7 +39,7 @@
<Name>qt5-svg-devel</Name>
<Summary>Development files for qt5-svg</Summary>
<RuntimeDependencies>
<Dependency versionFrom="5.15.10">qt5-base-devel</Dependency>
<Dependency versionFrom="5.15.11">qt5-base-devel</Dependency>
<Dependency release="current">qt5-svg</Dependency>
</RuntimeDependencies>
<Files>
@@ -51,7 +51,7 @@
<Package>
<Name>qt5-svg-docs</Name>
<RuntimeDependencies>
<Dependency versionFrom="5.15.10">qt5-base</Dependency>
<Dependency versionFrom="5.15.11">qt5-base</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="doc">/usr/share/doc</Path>
@@ -60,6 +60,13 @@
</Package>
<History>
<Update release="33">
<Date>2023-10-07</Date>
<Version>5.15.11</Version>
<Comment>Version bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="32">
<Date>2023-06-17</Date>
<Version>5.15.10</Version>