cache: Check 32-bit glyph index on 16-bit systems.

This commit is contained in:
suzuki toshiya 2009-07-03 18:01:24 +09:00
parent d7c0e4bef1
commit b9d2a0e2ad
2 changed files with 18 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2009-07-03 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
cache: Check 32-bit glyph index on 16-bit systems.
* src/cache/ftcbasic.c (ftc_basic_family_get_count):
Check overflow caused by the face including large
number of glyphs > 64k.
2009-07-03 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
cache: Fix some data types mismatching with their sources.

11
src/cache/ftcbasic.c vendored
View File

@ -25,6 +25,8 @@
#include "ftccback.h"
#include "ftcerror.h"
#define FT_COMPONENT trace_cache
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
@ -139,8 +141,15 @@
error = FTC_Manager_LookupFace( manager, family->attrs.scaler.face_id,
&face );
if ( (FT_ULong)face->num_glyphs > FT_UINT_MAX || 0 > face->num_glyphs )
{
FT_TRACE1(( "ftc_basic_family_get_count: too large number of glyphs " ));
FT_TRACE1(( "in this face, truncated\n", face->num_glyphs ));
}
if ( !error )
result = face->num_glyphs;
result = (FT_UInt)face->num_glyphs;
return result;
}