aboutsummaryrefslogtreecommitdiffstats
path: root/components/gfx/platform/macos
diff options
context:
space:
mode:
authorMatt Brubeck <mbrubeck@limpet.net>2016-07-06 08:16:37 -0700
committerMatt Brubeck <mbrubeck@limpet.net>2016-07-06 08:16:37 -0700
commit5582fcc2192bb73b48204eb1b972d6ea131f95e0 (patch)
treeed4f281f079a175d1cf73a8834b9cb1217470a50 /components/gfx/platform/macos
parent4aaae7a4e69fd0dfb10b562d6a78ddfe3972d8f1 (diff)
downloadservo-5582fcc2192bb73b48204eb1b972d6ea131f95e0.tar.gz
servo-5582fcc2192bb73b48204eb1b972d6ea131f95e0.zip
Bail out gracefully on malformed kern table headers.
Fixes #12081.
Diffstat (limited to 'components/gfx/platform/macos')
-rw-r--r--components/gfx/platform/macos/font.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/components/gfx/platform/macos/font.rs b/components/gfx/platform/macos/font.rs
index 4e4ae77213b..35f6e903103 100644
--- a/components/gfx/platform/macos/font.rs
+++ b/components/gfx/platform/macos/font.rs
@@ -113,11 +113,14 @@ impl FontHandle {
let pair_data_start = subtable_start + FORMAT_0_HEADER_LEN;
result.pair_data_range = pair_data_start..end;
+ if result.pair_data_range.len() != n_pairs * KERN_PAIR_LEN {
+ debug!("Bad data in kern header. Disable fast path.");
+ return None;
+ }
+
let pt_per_font_unit = self.ctfont.pt_size() as f64 /
self.ctfont.units_per_em() as f64;
result.px_per_font_unit = pt_to_px(pt_per_font_unit);
-
- debug_assert_eq!(n_pairs * KERN_PAIR_LEN, result.pair_data_range.len());
}
start = end;
}