diff options
author | Khushal <khushalsagar@chromium.org> | 2018-05-16 16:07:24 -0700 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-05-17 20:01:53 +0000 |
commit | 2d2fedd25de02aba20f5078e74df92b2d25b799c (patch) | |
tree | 792ba59606dc0688c04394fc2b840c3ee4e78904 /src/core/SkRemoteGlyphCache.cpp | |
parent | 53ea91139ad9f5ec32fba2cfd167277a5cc3f443 (diff) |
fonts: Use empty glyphs on cache miss.
In case of a cache miss, we end up using a glyph with garbage memory
which can result in arbitrary memory allocations for generating images
for these glyphs. Use empty glyphs instead.
R=herb@google.com
Bug: skia:7913
Change-Id: Ie81b006a6872e077f9fd37e0a5751750c66f9ecb
Reviewed-on: https://skia-review.googlesource.com/128701
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Khusal Sagar <khushalsagar@chromium.org>
Diffstat (limited to 'src/core/SkRemoteGlyphCache.cpp')
-rw-r--r-- | src/core/SkRemoteGlyphCache.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/SkRemoteGlyphCache.cpp b/src/core/SkRemoteGlyphCache.cpp index 5e21f8f292..985c0655e6 100644 --- a/src/core/SkRemoteGlyphCache.cpp +++ b/src/core/SkRemoteGlyphCache.cpp @@ -700,6 +700,8 @@ void SkStrikeClient::generateFontMetrics(const SkTypefaceProxy& typefaceProxy, SkDebugf("generateFontMetrics: %s\n", rec.dump().c_str()); SkStrikeCache::Dump(); SkDEBUGFAIL("GlyphCacheMiss"); + + sk_bzero(metrics, sizeof(*metrics)); } void SkStrikeClient::generateMetricsAndImage(const SkTypefaceProxy& typefaceProxy, @@ -710,6 +712,8 @@ void SkStrikeClient::generateMetricsAndImage(const SkTypefaceProxy& typefaceProx SkDebugf("generateMetricsAndImage: %s\n", rec.dump().c_str()); SkStrikeCache::Dump(); SkDEBUGFAIL("GlyphCacheMiss"); + + glyph->zeroMetrics(); } void SkStrikeClient::generatePath(const SkTypefaceProxy& typefaceProxy, |