aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-02-13 18:46:13 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-02-13 18:46:13 +0000
commit33fed14b1d4867015ac518874013e0b3e06ea982 (patch)
tree0b859d0ed3a23eed414a33706970bfd2f2138c09
parentbe233d63ca015c2991f4fe0802e4a31a71642062 (diff)
Fixed clusterfuzz found crash
BUG=343461 R=senorblanco@google.com, senorblanco@chromium.org, reed@chromium.org, reed@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/162943003 git-svn-id: http://skia.googlecode.com/svn/trunk@13439 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--src/core/SkBitmap.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/core/SkBitmap.cpp b/src/core/SkBitmap.cpp
index 96d683c0e2..3418fad7f1 100644
--- a/src/core/SkBitmap.cpp
+++ b/src/core/SkBitmap.cpp
@@ -1566,11 +1566,13 @@ void SkBitmap::unflatten(SkReadBuffer& buffer) {
SkImageInfo info;
info.unflatten(buffer);
size_t rowBytes = buffer.readInt();
- buffer.validate((info.width() >= 0) && (info.height() >= 0) &&
- SkColorTypeIsValid(info.fColorType) &&
- SkAlphaTypeIsValid(info.fAlphaType) &&
- validate_alphaType(info.fColorType, info.fAlphaType) &&
- info.validRowBytes(rowBytes));
+ if (!buffer.validate((info.width() >= 0) && (info.height() >= 0) &&
+ SkColorTypeIsValid(info.fColorType) &&
+ SkAlphaTypeIsValid(info.fAlphaType) &&
+ validate_alphaType(info.fColorType, info.fAlphaType) &&
+ info.validRowBytes(rowBytes))) {
+ return;
+ }
bool configIsValid = this->setConfig(info, rowBytes);
buffer.validate(configIsValid);