cache: Check 32-bit glyph index on 16-bit systems.
This commit is contained in:
parent
b566d42aa0
commit
2a5831ec07
|
@ -1,3 +1,11 @@
|
||||||
|
2009-07-31 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-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
||||||
|
|
||||||
cache: Fix some data types mismatching with their sources.
|
cache: Fix some data types mismatching with their sources.
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
#include "ftccback.h"
|
#include "ftccback.h"
|
||||||
#include "ftcerror.h"
|
#include "ftcerror.h"
|
||||||
|
|
||||||
|
#define FT_COMPONENT trace_cache
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
|
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
|
||||||
|
|
||||||
|
@ -139,8 +141,15 @@
|
||||||
|
|
||||||
error = FTC_Manager_LookupFace( manager, family->attrs.scaler.face_id,
|
error = FTC_Manager_LookupFace( manager, family->attrs.scaler.face_id,
|
||||||
&face );
|
&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 )
|
if ( !error )
|
||||||
result = face->num_glyphs;
|
result = (FT_UInt)face->num_glyphs;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue