[pfr] Add some safety guards.
* src/pfr/pfrload.c (pfr_phy_font_load): Check resolutions and number of characters. Fixes #1174.
This commit is contained in:
parent
1f005c0918
commit
182295cbcf
|
@ -852,6 +852,14 @@
|
||||||
phy_font->bbox.yMax = PFR_NEXT_SHORT( p );
|
phy_font->bbox.yMax = PFR_NEXT_SHORT( p );
|
||||||
phy_font->flags = flags = PFR_NEXT_BYTE( p );
|
phy_font->flags = flags = PFR_NEXT_BYTE( p );
|
||||||
|
|
||||||
|
if ( !phy_font->outline_resolution ||
|
||||||
|
!phy_font->metrics_resolution )
|
||||||
|
{
|
||||||
|
error = FT_THROW( Invalid_Table );
|
||||||
|
FT_ERROR(( "pfr_phy_font_load: invalid resolution\n" ));
|
||||||
|
goto Fail;
|
||||||
|
}
|
||||||
|
|
||||||
/* get the standard advance for non-proportional fonts */
|
/* get the standard advance for non-proportional fonts */
|
||||||
if ( !( flags & PFR_PHY_PROPORTIONAL ) )
|
if ( !( flags & PFR_PHY_PROPORTIONAL ) )
|
||||||
{
|
{
|
||||||
|
@ -969,6 +977,13 @@
|
||||||
phy_font->num_chars = count = PFR_NEXT_USHORT( p );
|
phy_font->num_chars = count = PFR_NEXT_USHORT( p );
|
||||||
phy_font->chars_offset = offset + (FT_Offset)( p - stream->cursor );
|
phy_font->chars_offset = offset + (FT_Offset)( p - stream->cursor );
|
||||||
|
|
||||||
|
if ( !phy_font->num_chars )
|
||||||
|
{
|
||||||
|
error = FT_THROW( Invalid_Table );
|
||||||
|
FT_ERROR(( "pfr_phy_font_load: no glyphs\n" ));
|
||||||
|
goto Fail;
|
||||||
|
}
|
||||||
|
|
||||||
Size = 1 + 1 + 2;
|
Size = 1 + 1 + 2;
|
||||||
if ( flags & PFR_PHY_2BYTE_CHARCODE )
|
if ( flags & PFR_PHY_2BYTE_CHARCODE )
|
||||||
Size += 1;
|
Size += 1;
|
||||||
|
|
Loading…
Reference in New Issue