aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkBitmapDevice.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2018-04-17 14:50:33 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-04-17 19:30:24 +0000
commit21a0380655b03a2593ccf658b38ef0ec6336367c (patch)
tree11746926aaa4afc8cf9c6d914429600bc855a65f /src/core/SkBitmapDevice.cpp
parent8ff86a6f38ceff715d5f11dcffc3fb7b1c97eb62 (diff)
detect if we made an infinite rect
Bug: oss-fuzz:7747 Change-Id: I43897e90bb3f0929afa72c40336f771f3a878ecb Reviewed-on: https://skia-review.googlesource.com/121887 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/core/SkBitmapDevice.cpp')
-rw-r--r--src/core/SkBitmapDevice.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/SkBitmapDevice.cpp b/src/core/SkBitmapDevice.cpp
index 7c0e0ab540..4b7b3db37b 100644
--- a/src/core/SkBitmapDevice.cpp
+++ b/src/core/SkBitmapDevice.cpp
@@ -428,6 +428,9 @@ static inline bool CanApplyDstMatrixAsCTM(const SkMatrix& m, const SkPaint& pain
void SkBitmapDevice::drawBitmapRect(const SkBitmap& bitmap,
const SkRect* src, const SkRect& dst,
const SkPaint& paint, SkCanvas::SrcRectConstraint constraint) {
+ SkASSERT(dst.isFinite());
+ SkASSERT(dst.isSorted());
+
SkMatrix matrix;
SkRect bitmapBounds, tmpSrc, tmpDst;
SkBitmap tmpBitmap;
@@ -456,6 +459,9 @@ void SkBitmapDevice::drawBitmapRect(const SkBitmap& bitmap,
}
// recompute dst, based on the smaller tmpSrc
matrix.mapRect(&tmpDst, tmpSrc);
+ if (!tmpDst.isFinite()) {
+ return;
+ }
dstPtr = &tmpDst;
}
}