From 68621135db4fcbf6ec57ee5ddffaf93ad8a4c634 Mon Sep 17 00:00:00 2001 From: Tom Kacvinsky Date: Mon, 12 Mar 2001 02:17:50 +0000 Subject: [PATCH] In cid_read_subrs, decode subroutines only if lenIV >= 0. --- src/cid/cidload.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/cid/cidload.c b/src/cid/cidload.c index a372a99b9..18c6d53bc 100644 --- a/src/cid/cidload.c +++ b/src/cid/cidload.c @@ -413,7 +413,8 @@ subr = face->subrs; 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_ULong data_len; FT_Byte* p; @@ -464,14 +465,17 @@ subr->code[count] = subr->code[count - 1] + len; } - /* decrypt subroutines */ - for ( count = 0; count < num_subrs; count++ ) + /* decrypt subroutines, but only if lenIV >= 0. */ + if ( lenIV >= 0 ) { - FT_UInt len; + for ( count = 0; count < num_subrs; count++ ) + { + FT_UInt len; - len = offsets[count + 1] - offsets[count]; - cid_decrypt( subr->code[count], len, 4330 ); + len = offsets[count + 1] - offsets[count]; + cid_decrypt( subr->code[count], len, 4330 ); + } } subr->num_subrs = num_subrs;