[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:
Parth Wazurkar 2018-07-13 21:36:01 +05:30
parent 9678e0c902
commit 5f57c6a8e8
1 changed files with 21 additions and 1 deletions

View File

@ -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;