diff options
author | caryclark <caryclark@google.com> | 2014-10-03 05:36:27 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-03 05:36:27 -0700 |
commit | d751ac01a3a887bc2d71146fc7353a5f33730043 (patch) | |
tree | 714cb383cc2947e4e5f15306c49f7163fd5742d4 /tests/PathOpsOpTest.cpp | |
parent | d012877a6d30ae768f9ccf3239ba09d730cbb6a5 (diff) |
abort op early if path isn't parseable
TBR=
BUG=419649
Review URL: https://codereview.chromium.org/623943002
Diffstat (limited to 'tests/PathOpsOpTest.cpp')
-rw-r--r-- | tests/PathOpsOpTest.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/PathOpsOpTest.cpp b/tests/PathOpsOpTest.cpp index f0fea767fe..00c02e8a3d 100644 --- a/tests/PathOpsOpTest.cpp +++ b/tests/PathOpsOpTest.cpp @@ -3925,7 +3925,30 @@ path.close(); testPathFailOp(reporter, path1, path2, (SkPathOp) 2, filename); } +static void fuzz1(skiatest::Reporter* reporter, const char* filename) { + SkPath path; + path.setFillType((SkPath::FillType) 0); +path.moveTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000)); +path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000)); +path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000)); +path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7f800000)); +path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000)); +path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0xffc00000), SkBits2Float(0xffc00000), SkBits2Float(0xffc00000)); +path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xff000001)); +path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xffc00000)); +path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000)); +path.close(); + + SkPath path1(path); + path.reset(); + path.setFillType((SkPath::FillType) 0); + + SkPath path2(path); + testPathFailOp(reporter, path1, path2, (SkPathOp) 2, filename); +} + static struct TestDesc failTests[] = { + TEST(fuzz1), TEST(fuzz714), TEST(fuzz487a), TEST(fuzz487b), |