Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.5:Update
libqt5-qtbase.29707
0001-Avoid-converting-supersized-QRectF-to-QRec...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-Avoid-converting-supersized-QRectF-to-QRect.patch of Package libqt5-qtbase.29707
From 27f1a68dcc74010e109facd9f75d9895743b1b61 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen <allan.jensen@qt.io> Date: Tue, 23 Jun 2020 09:50:54 +0200 Subject: [PATCH 01/11] Avoid converting supersized QRectF to QRect Check that the sizes are even representable when checking if clipping is necessary. Fixes oss-fuzz 23630 Change-Id: I95d6873d28b0e4f47aae7666f7ee96b745dc997b Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> (cherry picked from commit 177c0ef204e35938f3fef7bd7be5425d6804ec82) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 43f2244581bd739a61c07eb318261e28b2792650) --- src/gui/painting/qpaintengine_raster.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index 885c46e121..4dfdf20bf0 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -1810,9 +1810,9 @@ void QRasterPaintEngine::fill(const QVectorPath &path, const QBrush &brush) // ### Optimize for non transformed ellipses and rectangles... QRectF cpRect = path.controlPointRect(); - const QRect pathDeviceRect = s->matrix.mapRect(cpRect).toRect(); + const QRectF pathDeviceRect = s->matrix.mapRect(cpRect); // Skip paths that by conservative estimates are completely outside the paint device. - if (!pathDeviceRect.intersects(d->deviceRect)) + if (!pathDeviceRect.intersects(QRectF(d->deviceRect))) return; ProcessSpans blend = d->getBrushFunc(pathDeviceRect, &s->brushData); @@ -3074,7 +3074,12 @@ bool QRasterPaintEnginePrivate::isUnclipped(const QRect &rect, inline bool QRasterPaintEnginePrivate::isUnclipped(const QRectF &rect, int penWidth) const { - return isUnclipped(rect.normalized().toAlignedRect(), penWidth); + const QRectF norm = rect.normalized(); + if (norm.left() < INT_MIN || norm.top() < INT_MIN + || norm.right() > INT_MAX || norm.bottom() > INT_MAX + || norm.width() > INT_MAX || norm.height() > INT_MAX) + return false; + return isUnclipped(norm.toAlignedRect(), penWidth); } inline ProcessSpans -- 2.25.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