aboutsummaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorLei Zhang <leizleiz@users.noreply.github.com>2016-10-19 14:45:57 -0700
committerLei Zhang <leizleiz@users.noreply.github.com>2016-10-19 14:45:57 -0700
commit083b02b10572142d9863d945a8cf52fed2df997d (patch)
tree6c4b12c4dec299f4611581a81d58c37e9f75b7be /cpp
parent6d1efaa8a89ea563247747e99faf0c44e35842d3 (diff)
downloadsfntly-083b02b10572142d9863d945a8cf52fed2df997d.tar.gz
Fix NULL pointer derefs in sfntly::Font::Builder.
Fixes https://crbug.com/641452
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/sfntly/font.cc18
1 files changed, 11 insertions, 7 deletions
diff --git a/cpp/src/sfntly/font.cc b/cpp/src/sfntly/font.cc
index cfb956f..0c268cc 100644
--- a/cpp/src/sfntly/font.cc
+++ b/cpp/src/sfntly/font.cc
@@ -393,14 +393,18 @@ void Font::Builder::BuildTablesFromBuilders(Font* font,
}
static Table::Builder* GetBuilder(TableBuilderMap* builder_map, int32_t tag) {
- if (builder_map) {
- TableBuilderMap::iterator target = builder_map->find(tag);
- if (target != builder_map->end()) {
- return target->second.p_;
- }
- }
+ if (!builder_map)
+ return NULL;
- return NULL;
+ TableBuilderMap::iterator target = builder_map->find(tag);
+ if (target == builder_map->end())
+ return NULL;
+
+ Table::Builder* builder = target->second.p_;
+ if (!builder || !builder->InternalReadData())
+ return NULL;
+
+ return builder;
}
void Font::Builder::InterRelateBuilders(TableBuilderMap* builder_map) {