From 867c296b908be5c783cad60defe5cf5b3be393f2 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Tue, 21 Apr 2026 22:12:09 +0200 Subject: [PATCH] * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Use `FT_MulDiv`. Problem reported as https://issues.oss-fuzz.com/issues/505058300 --- src/sfnt/ttsbit.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/sfnt/ttsbit.c b/src/sfnt/ttsbit.c index 1655e40b6..d479b6a0b 100644 --- a/src/sfnt/ttsbit.c +++ b/src/sfnt/ttsbit.c @@ -1602,9 +1602,10 @@ metrics->horiBearingY = (FT_Short)( originOffsetY + metrics->height ); metrics->vertBearingY = (FT_Short)originOffsetY; - metrics->horiAdvance = (FT_UShort)( aadvance * - face->root.size->metrics.x_ppem / - face->header.Units_Per_EM ); + metrics->horiAdvance = + (FT_UShort)FT_MulDiv( aadvance, + face->root.size->metrics.x_ppem, + face->header.Units_Per_EM ); if ( face->vertical_info ) tt_face_get_metrics( face, TRUE, glyph_index, &abearing, &aadvance ); @@ -1615,9 +1616,10 @@ aadvance = (FT_UShort)FT_ABS( face->horizontal.Ascender - face->horizontal.Descender ); - metrics->vertAdvance = (FT_UShort)( aadvance * - face->root.size->metrics.x_ppem / - face->header.Units_Per_EM ); + metrics->vertAdvance = + (FT_UShort)FT_MulDiv( aadvance, + face->root.size->metrics.x_ppem, + face->header.Units_Per_EM ); } return error;