| Index: src/core/SkColorTable.cpp
|
| diff --git a/src/core/SkColorTable.cpp b/src/core/SkColorTable.cpp
|
| index c719defe869359af969b7f571ad6a2bb720cb566..dd11eb248444c63cb8d4fbe6fe737b2be45e90e6 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.validate(buffer.isAvailable(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);
|
|
|