summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Löhning <robert.loehning@qt.io>2024-05-03 23:25:15 +0200
committerRobert Löhning <robert.loehning@qt.io>2024-05-07 13:10:37 +0200
commite47bbb0c88101a9b53f061bde097d3725278fe71 (patch)
tree4e809ff37407cf1776063ab3b092b740664714ea
parent9ec3591cc06bb5ab262faea80cbf85653101bc36 (diff)
Guard against null pointer deref
Credit to OSS-Fuzz. This fixes issue 61586. Fixes: QTBUG-125065 Pick-to: 6.7 Change-Id: Ia8773cee99380fa865262b42d9a8e938d9e794ae Reviewed-by: Hatem ElKharashy <hatem.elkharashy@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
-rw-r--r--src/svg/qsvghandler.cpp8
-rw-r--r--tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp7
2 files changed, 12 insertions, 3 deletions
diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
index c49d3a7..9db7d64 100644
--- a/src/svg/qsvghandler.cpp
+++ b/src/svg/qsvghandler.cpp
@@ -1350,9 +1350,11 @@ static void parseFont(QSvgNode *node,
QSvgTinyDocument *doc = node->document();
QSvgFontStyle *fontStyle = nullptr;
if (!attributes.fontFamily.isEmpty()) {
- QSvgFont *svgFont = doc->svgFont(attributes.fontFamily.toString());
- if (svgFont)
- fontStyle = new QSvgFontStyle(svgFont, doc);
+ if (doc) {
+ QSvgFont *svgFont = doc->svgFont(attributes.fontFamily.toString());
+ if (svgFont)
+ fontStyle = new QSvgFontStyle(svgFont, doc);
+ }
}
if (!fontStyle)
fontStyle = new QSvgFontStyle;
diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
index 2c8368b..31381df 100644
--- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
@@ -61,6 +61,7 @@ private slots:
void oss_fuzz_23731();
void oss_fuzz_24131();
void oss_fuzz_24738();
+ void oss_fuzz_61586();
void imageRendering();
void illegalAnimateTransform_data();
void illegalAnimateTransform();
@@ -1668,6 +1669,12 @@ void tst_QSvgRenderer::oss_fuzz_24738()
QSvgRenderer().load(QByteArray("<svg><path d=\"a 2 1e-212.....\">"));
}
+void tst_QSvgRenderer::oss_fuzz_61586()
+{
+ // resulted in null pointer deref
+ QSvgRenderer().load(QByteArray("<svg><style>*{font-family:q}<linearGradient><stop>"));
+}
+
QByteArray image_data_url(QImage &image) {
QByteArray data;
QBuffer buffer(&data);