aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Khushal <khushalsagar@chromium.org>2018-05-16 16:07:24 -0700
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-17 20:01:53 +0000
commit2d2fedd25de02aba20f5078e74df92b2d25b799c (patch)
tree792ba59606dc0688c04394fc2b840c3ee4e78904 /src
parent53ea91139ad9f5ec32fba2cfd167277a5cc3f443 (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')
-rw-r--r--src/core/SkRemoteGlyphCache.cpp4
-rw-r--r--src/core/SkTypeface_remote.cpp2
2 files changed, 5 insertions, 1 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,
diff --git a/src/core/SkTypeface_remote.cpp b/src/core/SkTypeface_remote.cpp
index 3b58af9366..fe3fde83f5 100644
--- a/src/core/SkTypeface_remote.cpp
+++ b/src/core/SkTypeface_remote.cpp
@@ -39,7 +39,7 @@ void SkScalerContextProxy::generateImage(const SkGlyph& glyph) {
bool SkScalerContextProxy::generatePath(SkGlyphID glyphID, SkPath* path) {
fClient->generatePath(*this->typefaceProxy(), this->getRec(), glyphID, path);
- return true;
+ return false;
}
void SkScalerContextProxy::generateFontMetrics(SkPaint::FontMetrics* metrics) {