Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP2
libqt5-qtsvg
0010-Avoid-endless-recursion-in-SvgStructureNod...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0010-Avoid-endless-recursion-in-SvgStructureNode-bounds.patch of Package libqt5-qtsvg
From eeef972bec99bf77ed0e3a9ecbbba7a726a7724f Mon Sep 17 00:00:00 2001 From: Robert Loehning <robert.loehning@qt.io> Date: Wed, 15 Jul 2020 20:32:46 +0200 Subject: [PATCH 10/21] Avoid endless recursion in SvgStructureNode::bounds Fixes: oss-fuzz-24028 Change-Id: I2ddfcd494747f2857d56ce54bc9c4ee3f986ac3e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 3f11586d79566c9ceb311c6c4a1ea12078deed5d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 40067b9bf7fff392b267905ffe41f85209b607e9) --- src/svg/qsvgstructure.cpp | 9 +++++++-- src/svg/qsvgstructure_p.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/svg/qsvgstructure.cpp b/src/svg/qsvgstructure.cpp index 398cd5d..b89608b 100644 --- a/src/svg/qsvgstructure.cpp +++ b/src/svg/qsvgstructure.cpp @@ -47,6 +47,8 @@ #include "qlocale.h" #include "qdebug.h" +#include <qscopedvaluerollback.h> + QT_BEGIN_NAMESPACE QSvgG::QSvgG(QSvgNode *parent) @@ -356,8 +358,11 @@ void QSvgSwitch::init() QRectF QSvgStructureNode::bounds(QPainter *p, QSvgExtraStates &states) const { QRectF bounds; - for (QSvgNode *node : qAsConst(m_renderers)) - bounds |= node->transformedBounds(p, states); + if (!m_recursing) { + QScopedValueRollback<bool> guard(m_recursing, true); + for (QSvgNode *node : qAsConst(m_renderers)) + bounds |= node->transformedBounds(p, states); + } return bounds; } diff --git a/src/svg/qsvgstructure_p.h b/src/svg/qsvgstructure_p.h index b055364..6b69364 100644 --- a/src/svg/qsvgstructure_p.h +++ b/src/svg/qsvgstructure_p.h @@ -78,6 +78,7 @@ protected: QList<QSvgNode*> m_renderers; QHash<QString, QSvgNode*> m_scope; QList<QSvgStructureNode*> m_linkedScopes; + mutable bool m_recursing = false; }; class Q_SVG_PRIVATE_EXPORT QSvgG : public QSvgStructureNode -- 2.20.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor