forked from minhngoc25a/freetype2
[pk] Improve error checking in font file.
* src/pk/pklib.c (pk_load_font): Add check for `PK_ID' and `PK_PRE' command in the font file.
This commit is contained in:
parent
ab75cfedd0
commit
e4ec41fc02
|
@ -287,7 +287,7 @@ unsigned char bit_table[] = {
|
|||
PK_Glyph *goptr )
|
||||
{
|
||||
PK_Glyph go;
|
||||
UINT1 instr;
|
||||
UINT1 instr, pre, id;;
|
||||
UINT4 ds, check_sum, hppp, vppp, k;
|
||||
unsigned int flag, dny_f, bw, ess, size;
|
||||
UINT4 cc, tfm, dx, dy, dm, w, h, rs;
|
||||
|
@ -300,6 +300,25 @@ unsigned char bit_table[] = {
|
|||
go = NULL;
|
||||
nchars = -1;
|
||||
|
||||
if( FT_STREAM_SEEK( 0 ) )
|
||||
goto Exit;
|
||||
|
||||
pre = READ_UINT1( stream );
|
||||
if (pre != PK_PRE)
|
||||
{
|
||||
FT_ERROR(( "pk_load_font: missing PK_PRE(247) field\n" ));
|
||||
error = FT_THROW( Unknown_File_Format );
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
id = READ_UINT1( stream );
|
||||
if (id != PK_ID)
|
||||
{
|
||||
FT_ERROR(( "pk_load_font: missing PK_ID(89) field\n" ));
|
||||
error = FT_THROW( Unknown_File_Format );
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
k = READ_UINT1( stream );
|
||||
if ( FT_STREAM_SKIP( k ) )
|
||||
goto Exit;
|
||||
|
@ -469,6 +488,7 @@ unsigned char bit_table[] = {
|
|||
error = FT_THROW( Invalid_File_Format );
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
index = cc - go->code_min;
|
||||
go->bm_table[index].bbx_width = w;
|
||||
go->bm_table[index].bbx_height = h;
|
||||
|
|
Loading…
Reference in New Issue