aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkColorTable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkColorTable.cpp')
-rw-r--r--src/core/SkColorTable.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/core/SkColorTable.cpp b/src/core/SkColorTable.cpp
index c719defe86..12ec43ec98 100644
--- a/src/core/SkColorTable.cpp
+++ b/src/core/SkColorTable.cpp
@@ -90,8 +90,15 @@ SkColorTable::SkColorTable(SkFlattenableReadBuffer& buffer) {
fAlphaType = SkToU8(buffer.readUInt());
fCount = buffer.getArrayCount();
- fColors = (SkPMColor*)sk_malloc_throw(fCount * sizeof(SkPMColor));
- SkDEBUGCODE(bool success =) buffer.readColorArray(fColors, fCount);
+ size_t allocSize = fCount * sizeof(SkPMColor);
+ SkDEBUGCODE(bool success = false;)
+ if (buffer.validateAvailable(allocSize)) {
+ fColors = (SkPMColor*)sk_malloc_throw(allocSize);
+ SkDEBUGCODE(success =) buffer.readColorArray(fColors, fCount);
+ } else {
+ fCount = 0;
+ fColors = NULL;
+ }
#ifdef SK_DEBUG
SkASSERT((unsigned)fCount <= 256);
SkASSERT(success);