aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkReadBuffer.cpp
diff options
context:
space:
mode:
authorGravatar sugoi <sugoi@chromium.org>2014-06-06 06:44:16 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-06-06 06:44:17 -0700
commit0951fe12984944406e0f1bb105b9fa4c54fcdcdd (patch)
tree03fe9c0a489b34b1f9e60701e9c0501ae08a9974 /src/core/SkReadBuffer.cpp
parent5102345029be75f089e083228e317545627ea1cb (diff)
Fixing another clusterfuzz issue
This was introduced by removing SkValidatingReadBuffer::readBitmap in https://codereview.chromium.org/295793002/ Since SkReadBuffer::skip wasn't virtual, it was using the unsafe SkReadBuffer::skip within SkReadBuffer::readBitmap rather than using SkValidatingReadBuffer::skip. I also removed direct uses of fReader within SkReadBuffer::readBitmap so that it can use the virtual readInt / readFixed functions that have a version in SkValidatingReadBuffer. Also, I changed SkReadBuffer::readPoint so that it uses the virtual readScalar, that way, it becomes redundant with SkValidatingReadBuffer::readPoint, which can then be removed. BUG=380723 R=reed@google.com, mtklein@google.com, sugoi@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/317003003
Diffstat (limited to 'src/core/SkReadBuffer.cpp')
-rw-r--r--src/core/SkReadBuffer.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/core/SkReadBuffer.cpp b/src/core/SkReadBuffer.cpp
index a3ae8ae9b9..cacf989e20 100644
--- a/src/core/SkReadBuffer.cpp
+++ b/src/core/SkReadBuffer.cpp
@@ -199,8 +199,8 @@ bool SkReadBuffer::readBitmap(SkBitmap* bitmap) {
if (this->readBool()) {
// An SkBitmapHeap was used for writing. Read the index from the stream and find the
// corresponding SkBitmap in fBitmapStorage.
- const uint32_t index = fReader.readU32();
- fReader.readU32(); // bitmap generation ID (see SkWriteBuffer::writeBitmap)
+ const uint32_t index = this->readUInt();
+ this->readUInt(); // bitmap generation ID (see SkWriteBuffer::writeBitmap)
if (fBitmapStorage) {
*bitmap = *fBitmapStorage->getBitmap(index);
fBitmapStorage->releaseRef(index);
@@ -223,8 +223,8 @@ bool SkReadBuffer::readBitmap(SkBitmap* bitmap) {
// A non-zero size means the SkBitmap was encoded. Read the data and pixel
// offset.
const void* data = this->skip(length);
- const int32_t xOffset = fReader.readS32();
- const int32_t yOffset = fReader.readS32();
+ const int32_t xOffset = this->readInt();
+ const int32_t yOffset = this->readInt();
if (fBitmapDecoder != NULL && fBitmapDecoder(data, length, bitmap)) {
if (bitmap->width() == width && bitmap->height() == height) {
#ifdef DEBUG_NON_DETERMINISTIC_ASSERT