From 45a6d7159e7c5a03c4191610ff981dd7fc2be7b4 Mon Sep 17 00:00:00 2001 From: Yuqian Li Date: Mon, 14 May 2018 09:39:24 -0700 Subject: Avoid dividing by zero in SkTwoPointConicalGradient::Create Bug: oss-fuzz:6146 oss-fuzz:7474 Change-Id: I5f0488f4572140ccb7b9374bc9a66b8ae81dd2d4 Reviewed-on: https://skia-review.googlesource.com/127990 Reviewed-by: Mike Klein Commit-Queue: Mike Klein Auto-Submit: Yuqian Li --- src/shaders/gradients/SkTwoPointConicalGradient.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/shaders') diff --git a/src/shaders/gradients/SkTwoPointConicalGradient.cpp b/src/shaders/gradients/SkTwoPointConicalGradient.cpp index 48877da34c..d98f4bce20 100644 --- a/src/shaders/gradients/SkTwoPointConicalGradient.cpp +++ b/src/shaders/gradients/SkTwoPointConicalGradient.cpp @@ -54,6 +54,9 @@ sk_sp SkTwoPointConicalGradient::Create(const SkPoint& c0, SkScalar r0 Type gradientType; if (SkScalarNearlyZero((c0 - c1).length())) { + if (SkScalarNearlyZero(SkTMax(r0, r1))) { + return nullptr; // Degenerate case; avoid dividing by zero. + } // Concentric case: we can pretend we're radial (with a tiny twist). const SkScalar scale = sk_ieee_float_divide(1, SkTMax(r0, r1)); gradientMatrix = SkMatrix::MakeTrans(-c1.x(), -c1.y()); -- cgit v1.2.3