aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2017-06-20 11:22:51 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-21 16:59:03 +0000
commit711450e948b9900011dc0d474f82bf7bc9913259 (patch)
tree407cb28f9cf02a4ba222699fcf1bf15be60ff214 /tests
parent7da6dfabc44891c51dedcb4754477b662d8c8a0a (diff)
SkRegion: more robust validation
BUG=oss-fuzz:1864 Change-Id: I4c3d3c4c7b0717399fe16f227e032682b13ebc74 Reviewed-on: https://skia-review.googlesource.com/20322 Reviewed-by: Cary Clark <caryclark@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/RegionTest.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/RegionTest.cpp b/tests/RegionTest.cpp
index 2a5d0a5059..7fcf1014f7 100644
--- a/tests/RegionTest.cpp
+++ b/tests/RegionTest.cpp
@@ -328,6 +328,13 @@ DEF_TEST(Region_readFromMemory_bad, r) {
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,
2147483647, 2147483647};
@@ -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)));
+ }
}