summaryrefslogtreecommitdiff
path: root/src/pk/pklib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pk/pklib.c')
-rw-r--r--src/pk/pklib.c22
1 files changed, 21 insertions, 1 deletions
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;