Index: src/core/SkValidatingReadBuffer.cpp |
diff --git a/src/core/SkValidatingReadBuffer.cpp b/src/core/SkValidatingReadBuffer.cpp |
index c80192f8b26d965a24b1f61bfa7abe2cbd8946e1..ad4b6c409e6a0adca7c85b87c69a59089ac76779 100644 |
--- a/src/core/SkValidatingReadBuffer.cpp |
+++ b/src/core/SkValidatingReadBuffer.cpp |
@@ -222,14 +222,20 @@ |
return this->validate((size <= SK_MaxU32) && fReader.isAvailable(static_cast<uint32_t>(size))); |
} |
-SkFlattenable* SkValidatingReadBuffer::readFlattenable(SkFlattenable::Type) { |
+SkFlattenable* SkValidatingReadBuffer::readFlattenable(SkFlattenable::Type type) { |
SkString name; |
this->readString(&name); |
if (fError) { |
return nullptr; |
} |
+ // Is this the type we wanted ? |
const char* cname = name.c_str(); |
+ SkFlattenable::Type baseType; |
+ if (!SkFlattenable::NameToType(cname, &baseType) || (baseType != type)) { |
+ return nullptr; |
+ } |
+ |
SkFlattenable::Factory factory = SkFlattenable::NameToFactory(cname); |
if (nullptr == factory) { |
return nullptr; // writer failed to give us the flattenable |