From 12ae59a197faebd870968189aa7371859a976748 Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Sat, 22 Jul 2017 22:21:26 -0400 Subject: [PATCH] freetype: better way to determine max_width/height, fixes buffer overflow with alternate OSD fonts --- gfx/drivers_font_renderer/freetype.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gfx/drivers_font_renderer/freetype.c b/gfx/drivers_font_renderer/freetype.c index 88f4d9eaa5..966ab74548 100644 --- a/gfx/drivers_font_renderer/freetype.c +++ b/gfx/drivers_font_renderer/freetype.c @@ -169,9 +169,8 @@ static bool font_renderer_create_atlas(ft_font_renderer_t *handle, float font_si unsigned i, x, y; freetype_atlas_slot_t* slot = NULL; - /* TODO: find a better way to determine max_width/max_height */ - unsigned max_width = font_size + 2; - unsigned max_height = font_size + 2; + unsigned max_width = round((handle->face->bbox.xMax - handle->face->bbox.xMin) * font_size / handle->face->units_per_EM); + unsigned max_height = round((handle->face->bbox.yMax - handle->face->bbox.yMin) * font_size / handle->face->units_per_EM); unsigned atlas_width = max_width * FT_ATLAS_COLS;