Adding kernel offset validation
authorsugoi <sugoi@chromium.org>
Fri, 6 Jun 2014 13:22:03 +0000 (06:22 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 6 Jun 2014 13:22:03 +0000 (06:22 -0700)
Fixing bug found by clusterfuzz in SkMatrixConvolutionImageFilter.

BUG=381244
R=senorblanco@google.com, senorblanco@chromium.org, sugoi@google.com

Author: sugoi@chromium.org

Review URL: https://codereview.chromium.org/319003002

src/effects/SkMatrixConvolutionImageFilter.cpp

index 8ae8377..89e113b 100644 (file)
@@ -86,7 +86,9 @@ SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter(SkReadBuffer& buf
     buffer.validate((fKernel != 0) &&
                     SkScalarIsFinite(fGain) &&
                     SkScalarIsFinite(fBias) &&
-                    tile_mode_is_valid(fTileMode));
+                    tile_mode_is_valid(fTileMode) &&
+                    (fKernelOffset.fX >= 0) && (fKernelOffset.fX < fKernelSize.fWidth) &&
+                    (fKernelOffset.fY >= 0) && (fKernelOffset.fY < fKernelSize.fHeight));
 }
 
 void SkMatrixConvolutionImageFilter::flatten(SkWriteBuffer& buffer) const {