summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-12-10 11:06:26 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-12-11 18:32:53 +0000
commit9fbce8d5cbcc9d8d255328d6ec040db0510ca289 (patch)
tree71a0c6bd9d4718451217f0dde31735bc1608ca9d /src
parent76f11b0eda50f05fb0912738be41b4333a82f748 (diff)
Avoid crash in blitting or fast draw when QPointF is too big
Change-Id: I88182d5d95fda15d33836f16dee78167685b3765 Fixes: QTBUG-72392 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 7caaf3a8fa..90b6d16551 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -997,6 +997,10 @@ void QRasterPaintEnginePrivate::drawImage(const QPointF &pt,
{
if (alpha == 0 || !clip.isValid())
return;
+ if (pt.x() > qreal(clip.right()) || pt.y() > qreal(clip.bottom()))
+ return;
+ if ((pt.x() + img.width()) < qreal(clip.left()) || (pt.y() + img.height()) < qreal(clip.top()))
+ return;
Q_ASSERT(img.depth() >= 8);
@@ -1063,6 +1067,10 @@ void QRasterPaintEnginePrivate::blitImage(const QPointF &pt,
{
if (!clip.isValid())
return;
+ if (pt.x() > qreal(clip.right()) || pt.y() > qreal(clip.bottom()))
+ return;
+ if ((pt.x() + img.width()) < qreal(clip.left()) || (pt.y() + img.height()) < qreal(clip.top()))
+ return;
Q_ASSERT(img.depth() >= 8);