+diff --git a/src/core/SkAAClip.cpp b/src/core/SkAAClip.cpp
+index b22b8ebebb..aec422fa96 100644
+--- a/src/core/SkAAClip.cpp
++++ b/src/core/SkAAClip.cpp
+@@ -1630,6 +1630,12 @@ static void operateY(SkAAClip::Builder& builder, const SkAAClip& A,
+     int topB = iterB.top();
+     int botB = iterB.bottom();
+ 
++#if defined(IS_FUZZING)
++    if ((botA - topA) > 100000 || (botB - topB) > 100000) {
++        return;
++    }
++#endif
++
+     do {
+         const uint8_t* rowA = nullptr;
+         const uint8_t* rowB = nullptr;
 diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
-index 478617f828..f4ead536aa 100644
+index 6f8ee30602..d3e7bec831 100644
 --- a/src/core/SkDraw.cpp
 +++ b/src/core/SkDraw.cpp
-@@ -1120,6 +1120,12 @@ void SkDraw::drawPath(const SkPath& origSrcPath, const SkPaint& origPaint,
+@@ -1134,6 +1134,12 @@ void SkDraw::drawPath(const SkPath& origSrcPath, const SkPaint& origPaint,
      // transform the path into device space
      pathPtr->transform(*matrix, devPathPtr);
  

         reader.readPoint(&offset);
         SkPaint font;
diff --git a/src/effects/Sk1DPathEffect.cpp b/src/effects/Sk1DPathEffect.cpp
index 8a74c16cda..f6a5557914 100644
--- a/src/effects/Sk1DPathEffect.cpp
+++ b/src/effects/Sk1DPathEffect.cpp
@@ -15,6 +15,11 @@

     int winding = get_winding(inputPolygonVerts, inputPolygonSize);
     if (0 == winding) {
diff --git a/src/utils/SkShadowTessellator.cpp b/src/utils/SkShadowTessellator.cpp
index 11e8f2d5c6..70f4cd47c9 100755
--- a/src/utils/SkShadowTessellator.cpp
+++ b/src/utils/SkShadowTessellator.cpp
@@ -245,6 +245,11 @@ bool SkBaseShadowTessellator::addArc(const SkVector& nextNormal, bool finishArc)
