In cid_read_subrs, decode subroutines only if lenIV >= 0.
This commit is contained in:
parent
e355d008b3
commit
68621135db
|
@ -413,7 +413,8 @@
|
||||||
subr = face->subrs;
|
subr = face->subrs;
|
||||||
for ( n = 0; n < cid->num_dicts; n++, subr++ )
|
for ( n = 0; n < cid->num_dicts; n++, subr++ )
|
||||||
{
|
{
|
||||||
CID_FontDict* dict = cid->font_dicts + n;
|
CID_FontDict* dict = cid->font_dicts + n;
|
||||||
|
FT_Int lenIV = dict->private_dict.lenIV;
|
||||||
FT_UInt count, num_subrs = dict->num_subrs;
|
FT_UInt count, num_subrs = dict->num_subrs;
|
||||||
FT_ULong data_len;
|
FT_ULong data_len;
|
||||||
FT_Byte* p;
|
FT_Byte* p;
|
||||||
|
@ -464,14 +465,17 @@
|
||||||
subr->code[count] = subr->code[count - 1] + len;
|
subr->code[count] = subr->code[count - 1] + len;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* decrypt subroutines */
|
/* decrypt subroutines, but only if lenIV >= 0. */
|
||||||
for ( count = 0; count < num_subrs; count++ )
|
if ( lenIV >= 0 )
|
||||||
{
|
{
|
||||||
FT_UInt len;
|
for ( count = 0; count < num_subrs; count++ )
|
||||||
|
{
|
||||||
|
FT_UInt len;
|
||||||
|
|
||||||
|
|
||||||
len = offsets[count + 1] - offsets[count];
|
len = offsets[count + 1] - offsets[count];
|
||||||
cid_decrypt( subr->code[count], len, 4330 );
|
cid_decrypt( subr->code[count], len, 4330 );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
subr->num_subrs = num_subrs;
|
subr->num_subrs = num_subrs;
|
||||||
|
|
Loading…
Reference in New Issue