diff options
author | Lei Zhang <leizleiz@users.noreply.github.com> | 2016-10-19 14:45:57 -0700 |
---|---|---|
committer | Lei Zhang <leizleiz@users.noreply.github.com> | 2016-10-19 14:45:57 -0700 |
commit | 083b02b10572142d9863d945a8cf52fed2df997d (patch) | |
tree | 6c4b12c4dec299f4611581a81d58c37e9f75b7be /cpp | |
parent | 6d1efaa8a89ea563247747e99faf0c44e35842d3 (diff) | |
download | sfntly-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.cc | 18 |
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) { |