diff options
author | Suzuki, Toshiya (鈴木俊哉) <mpsuzuki@hiroshima-u.ac.jp> | 2008-02-21 18:46:07 +0000 |
---|---|---|
committer | Suzuki, Toshiya (鈴木俊哉) <mpsuzuki@hiroshima-u.ac.jp> | 2008-02-21 18:46:07 +0000 |
commit | 6cb2faa845f3841f2b5281b42e22e5a450cd9fd9 (patch) | |
tree | 60ed0f6c2a5f8970f70db22da296cd7cf5885d5e /builds | |
parent | 31093ccecd9015f238a089688ffeaf5c15192bc6 (diff) |
* src/base/ftmac.c: Fix a bug of PostScript font name synthesis in parse_fond().
Diffstat (limited to 'builds')
-rw-r--r-- | builds/mac/ftmac.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/builds/mac/ftmac.c b/builds/mac/ftmac.c index b0b79ea1..e5e29644 100644 --- a/builds/mac/ftmac.c +++ b/builds/mac/ftmac.c @@ -727,6 +727,10 @@ typedef short ResourceIndex; assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 ); base_assoc = assoc; + /* the maximum faces in a FOND is 48, size of StyleTable.indexes[] */ + if ( 47 < face_index ) + return; + /* Let's do a little range checking before we get too excited here */ if ( face_index < count_faces_sfnt( fond_data ) ) { @@ -778,9 +782,10 @@ typedef short ResourceIndex; ft_memcpy(ps_name, names[0] + 1, ps_name_len); ps_name[ps_name_len] = 0; } - if ( style->indexes[0] > 1 ) + if ( style->indexes[face_index] > 1 && + style->indexes[face_index] <= FT_MIN( string_count, 64 ) ) { - unsigned char* suffixes = names[style->indexes[0] - 1]; + unsigned char* suffixes = names[style->indexes[face_index] - 1]; for ( i = 1; i <= suffixes[0]; i++ ) |