diff options
author | Hal Canary <halcanary@google.com> | 2017-06-21 19:57:09 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-21 19:57:21 +0000 |
commit | 7f4124058eda42e8379f2e979fabc339b8580348 (patch) | |
tree | 9f6eeda7857bc0b3f8c34726d6d4aea70a35c88f /src/core | |
parent | b29dd819c9f4cc0f33c24a10b128c363a4c83a6f (diff) |
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 <caryclark@google.com>
> Commit-Queue: Hal Canary <halcanary@google.com>
TBR=halcanary@google.com,caryclark@google.com,reed@google.com
Change-Id: I95cbbf064db6ea7ef74a757bca058ba8de20d87b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: oss-fuzz:1864
Reviewed-on: https://skia-review.googlesource.com/20452
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkRegion.cpp | 18 |
1 files changed, 1 insertions, 17 deletions
diff --git a/src/core/SkRegion.cpp b/src/core/SkRegion.cpp index b25633b67c..e873ebb453 100644 --- a/src/core/SkRegion.cpp +++ b/src/core/SkRegion.cpp @@ -1155,9 +1155,6 @@ static bool validate_run(const int32_t* runs, if (rect.fTop == SkRegion::kRunTypeSentinel) { return false; // no rect can contain SkRegion::kRunTypeSentinel } - if (rect.fTop != givenBounds.fTop) { - return false; // Must not begin with empty span that does not contribute to bounds. - } do { --ySpanCount; if (ySpanCount < 0) { @@ -1167,13 +1164,6 @@ static bool validate_run(const int32_t* runs, if (rect.fBottom == SkRegion::kRunTypeSentinel) { return false; } - if (rect.fBottom > givenBounds.fBottom) { - return false; // Must not end with empty span that does not contribute to bounds. - } - if (rect.fBottom <= rect.fTop) { - return false; // y-intervals must be ordered; rects must be non-empty. - } - int32_t xIntervals = *runs++; SkASSERT(runs < end); if (xIntervals < 0 || runs + 1 + 2 * xIntervals > end) { @@ -1183,19 +1173,13 @@ static bool validate_run(const int32_t* runs, if (intervalCount < 0) { return false; // too many intervals } - bool firstInterval = true; - int32_t lastRight; // check that x-intervals are distinct and ordered. while (xIntervals-- > 0) { rect.fLeft = *runs++; rect.fRight = *runs++; if (rect.fLeft == SkRegion::kRunTypeSentinel || - rect.fRight == SkRegion::kRunTypeSentinel || - rect.fLeft >= rect.fRight || // check non-empty rect - (!firstInterval && rect.fLeft <= lastRight)) { + rect.fRight == SkRegion::kRunTypeSentinel || rect.isEmpty()) { return false; } - lastRight = rect.fRight; - firstInterval = false; bounds.join(rect); } if (*runs++ != SkRegion::kRunTypeSentinel) { |