diff --git a/ChangeLog b/ChangeLog index 9a2d130d1..d4f859bb4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-09-17 Werner Lemberg + + [pcf] Fix integer overflows (#45985). + + * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv. + 2015-09-17 Werner Lemberg [pcf] Use FT_ABS for some property values (#45893). diff --git a/src/pcf/pcfread.c b/src/pcf/pcfread.c index a17b62ed4..9d8d794a9 100644 --- a/src/pcf/pcfread.c +++ b/src/pcf/pcfread.c @@ -1290,7 +1290,7 @@ THE SOFTWARE. bsize->width = (FT_Short)( ( FT_ABS( prop->value.l ) + 5 ) / 10 ); } else - bsize->width = (FT_Short)( bsize->height * 2 / 3 ); + bsize->width = (FT_Short)FT_MulDiv( bsize->height, 2, 3 ); prop = pcf_find_property( face, "POINT_SIZE" ); if ( prop ) @@ -1339,10 +1339,12 @@ THE SOFTWARE. { bsize->y_ppem = bsize->size; if ( resolution_y ) - bsize->y_ppem = bsize->y_ppem * resolution_y / 72; + bsize->y_ppem = FT_MulDiv( bsize->y_ppem, resolution_y, 72 ); } if ( resolution_x && resolution_y ) - bsize->x_ppem = bsize->y_ppem * resolution_x / resolution_y; + bsize->x_ppem = FT_MulDiv( bsize->y_ppem, + resolution_x, + resolution_y ); else bsize->x_ppem = bsize->y_ppem; }