From f975b3eb65bb923cde5df6ff154d5c040271c450 Mon Sep 17 00:00:00 2001 From: Hal Canary Date: Thu, 22 Jun 2017 11:21:57 +0000 Subject: Revert "Revert "SkRegion: more robust validation"" This reverts commit 7f4124058eda42e8379f2e979fabc339b8580348. Original change's description: > Revert "SkRegion: more robust validation" > > This reverts commit 711450e948b9900011dc0d474f82bf7bc9913259. > > Reason for revert: speculative revert to fix chrome roll. > > Original change's description: > > SkRegion: more robust validation > > > > BUG=oss-fuzz:1864 > > Change-Id: I4c3d3c4c7b0717399fe16f227e032682b13ebc74 > > Reviewed-on: https://skia-review.googlesource.com/20322 > > Reviewed-by: Cary Clark > > Commit-Queue: Hal Canary TBR=halcanary@google.com,caryclark@google.com,reed@google.com Change-Id: I1e5500cb83adeeda544282577ce55812e1b5d682 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: oss-fuzz:1864 Reviewed-on: https://skia-review.googlesource.com/20501 Reviewed-by: Hal Canary Commit-Queue: Hal Canary --- tests/RegionTest.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'tests/RegionTest.cpp') diff --git a/tests/RegionTest.cpp b/tests/RegionTest.cpp index 2a5d0a5059..7fcf1014f7 100644 --- a/tests/RegionTest.cpp +++ b/tests/RegionTest.cpp @@ -327,6 +327,13 @@ DEF_TEST(Region_readFromMemory_bad, r) { 2147483647, 2147483647}; REPORTER_ASSERT(r, 0 != region.readFromMemory(data, sizeof(data))); } + { + // Example of valid data with 4 intervals + int32_t data[] = {19, 0, 0, 30, 30, 3, 4, 0, 10, 2, 0, 10, 20, 30, + 2147483647, 20, 0, 2147483647, 30, 2, 0, 10, 20, 30, + 2147483647, 2147483647}; + REPORTER_ASSERT(r, 0 != region.readFromMemory(data, sizeof(data))); + } { // Short count int32_t data[] = {8, 0, 0, 10, 10, 1, 2, 0, 10, 2, 0, 4, 6, 10, @@ -363,4 +370,29 @@ DEF_TEST(Region_readFromMemory_bad, r) { -1, 2147483647}; REPORTER_ASSERT(r, 0 == region.readFromMemory(data, sizeof(data))); } + { + // starts with empty yspan + int32_t data[] = {12, 0, 0, 10, 10, 2, 2, -5, 0, 0, 2147483647, 10, + 2, 0, 4, 6, 10, 2147483647, 2147483647}; + REPORTER_ASSERT(r, 0 == region.readFromMemory(data, sizeof(data))); + } + { + // ends with empty yspan + int32_t data[] = {12, 0, 0, 10, 10, 2, 2, 0, 10, 2, 0, 4, 6, 10, + 2147483647, 15, 0, 2147483647, 2147483647}; + REPORTER_ASSERT(r, 0 == region.readFromMemory(data, sizeof(data))); + } + { + // y intervals out of order + int32_t data[] = {19, 0, -20, 30, 10, 3, 4, 0, 10, 2, 0, 10, 20, 30, + 2147483647, -20, 0, 2147483647, -10, 2, 0, 10, 20, 30, + 2147483647, 2147483647}; + REPORTER_ASSERT(r, 0 == region.readFromMemory(data, sizeof(data))); + } + { + // x intervals out of order + int32_t data[] = {9, 0, 0, 10, 10, 1, 2, 0, 10, 2, 6, 10, 0, 4, + 2147483647, 2147483647}; + REPORTER_ASSERT(r, 0 == region.readFromMemory(data, sizeof(data))); + } } -- cgit v1.2.3