diff --git a/src/pk/pklib.c b/src/pk/pklib.c index eecf77dc4..b612563db 100644 --- a/src/pk/pklib.c +++ b/src/pk/pklib.c @@ -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;