diff options
author | 2014-09-29 07:57:20 -0700 | |
---|---|---|
committer | 2014-09-29 07:57:20 -0700 | |
commit | 3a49520696b2eca69e57884657d23fd2402ccfd1 (patch) | |
tree | dbfb5f5c4cdfa32fde5de9435f941ae6b86c3645 /tests | |
parent | 9f58dd047c4acd49baa54f9357b7519d5e69e6dc (diff) |
Sanitize SkMatrixConvolutionImageFilter creation params.
Apply the same memory limit in the Create() function that we do when
deserializing.
R=reed@google.com
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/610723002
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ImageFilterTest.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp index b1d087825b..d0fa93f6e9 100644 --- a/tests/ImageFilterTest.cpp +++ b/tests/ImageFilterTest.cpp @@ -895,6 +895,60 @@ DEF_TEST(HugeBlurImageFilter, reporter) { test_huge_blur(&device, reporter); } +DEF_TEST(MatrixConvolutionSanityTest, reporter) { + SkScalar kernel[1] = { 0 }; + SkScalar gain = SK_Scalar1, bias = 0; + SkIPoint kernelOffset = SkIPoint::Make(1, 1); + + // Check that an enormous (non-allocatable) kernel gives a NULL filter. + SkAutoTUnref<SkImageFilter> conv(SkMatrixConvolutionImageFilter::Create( + SkISize::Make(1<<30, 1<<30), + kernel, + gain, + bias, + kernelOffset, + SkMatrixConvolutionImageFilter::kRepeat_TileMode, + false)); + + REPORTER_ASSERT(reporter, NULL == conv.get()); + + // Check that a NULL kernel gives a NULL filter. + conv.reset(SkMatrixConvolutionImageFilter::Create( + SkISize::Make(1, 1), + NULL, + gain, + bias, + kernelOffset, + SkMatrixConvolutionImageFilter::kRepeat_TileMode, + false)); + + REPORTER_ASSERT(reporter, NULL == conv.get()); + + // Check that a kernel width < 1 gives a NULL filter. + conv.reset(SkMatrixConvolutionImageFilter::Create( + SkISize::Make(0, 1), + kernel, + gain, + bias, + kernelOffset, + SkMatrixConvolutionImageFilter::kRepeat_TileMode, + false)); + + REPORTER_ASSERT(reporter, NULL == conv.get()); + + // Check that kernel height < 1 gives a NULL filter. + conv.reset(SkMatrixConvolutionImageFilter::Create( + SkISize::Make(1, -1), + kernel, + gain, + bias, + kernelOffset, + SkMatrixConvolutionImageFilter::kRepeat_TileMode, + false)); + + REPORTER_ASSERT(reporter, NULL == conv.get()); +} + static void test_xfermode_cropped_input(SkBaseDevice* device, skiatest::Reporter* reporter) { SkCanvas canvas(device); canvas.clear(0); |