[sfnt] Don't provide (completely) broken strike data

System Internals / FreeType - Werner Lemberg [gnu.org] - 9 September 2016 15:11 UTC

FreeType tries to sanitize strike header data; we now reject completely broken ones.

- include/freetype/internal/tttypes.h (TT_FaceRec): New `sbit_strike_map' array pointer.

- src/base/ftobjs.c (FT_Match_Size): Reject matches where either width or height would be zero. Add tracing message in case of error.

- src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map', only using (more or less) valid strike header data for FT_Face's `available_sizes' array. (sfnt_done_face): Updated.

- src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use `sbit_strike_map'. (tt_face_load_strike_metrics): Improve tracing.

- src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.

d609b7c [sfnt] Don't provide (completely) broken strike data.
ChangeLog | 25 +++++++++++++++++++++++++
include/freetype/freetype.h | 4 ++++
include/freetype/internal/tttypes.h | 1 +
src/base/ftobjs.c | 5 +++++
src/sfnt/sfobjs.c | 31 +++++++++++++++++++++++--------
src/sfnt/ttsbit.c | 12 ++++++++++--
src/truetype/ttdriver.c | 10 ++++++----
7 files changed, 74 insertions(+), 14 deletions(-)

Upstream: git.savannah.gnu.org


  • Share