diff --git a/ChangeLog b/ChangeLog index 21deaf45c..4b0ede23e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,23 +1,25 @@ 2002-01-05 David Turner - * src/autohint/ahhint.c: modified computation of auto-hinted stem - widths, this avoids color fringes in "ClearType-like" rendering - - * src/truetype/ttgload.c: modified the TrueType loader to make it - more paranoid, this avoids nasty buffer overflows in the case of - invalid glyph data (as encountered in the output of some buggy - font converters..) + * src/autohint/ahhint.c (ah_align_linked_edge): Modified computation + of auto-hinted stem widths; this avoids color fringes in + "ClearType-like" rendering. + + * src/truetype/ttgload.c (TT_Load_Glyph_Header, + TT_Load_Simple_Glyph, TT_Load_Composite_Glyph, load_truetype_glyph): + Modified the TrueType loader to make it more paranoid; this avoids + nasty buffer overflows in the case of invalid glyph data (as + encountered in the output of some buggy font converters). 2002-01-04 David Turner - * README.UNX: added special README file for Unix users + * README.UNX: Added special README file for Unix users. - * builds/unix/ftsystem.c (FT_New_Stream): fixed typo - - * src/base/ftobjs.c: added #include FT_OUTLINE_H to get rid - of compiler warnings - - * src/base/ftoutln.c (FT_Outline_Check): remove compiler warning + * builds/unix/ftsystem.c (FT_New_Stream): Fixed typo. + + * src/base/ftobjs.c: Added #include FT_OUTLINE_H to get rid + of compiler warnings. + + * src/base/ftoutln.c (FT_Outline_Check): Remove compiler warning. 2002-01-03 Werner Lemberg diff --git a/README b/README index cf8c8831c..02200a80e 100644 --- a/README +++ b/README @@ -2,20 +2,22 @@ Special note to Unix users ========================== - Please read the file "README.UNX", it contains important information - regarding the installation of FreeType on Unix systems, especially - GNU based operating systems like GNU/Linux. + Please read the file "README.UNX", it contains important + information regarding the installation of FreeType on Unix + systems, especially GNU based operating systems like GNU/Linux. FreeType 2.0.6 ============== - Please read the docs/CHANGES file, it contains IMPORTANT INFORMATION. + Please read the docs/CHANGES file, it contains IMPORTANT + INFORMATION. - Read the files "INSTALL" or "docs/BUILD" for installation instructions. + Read the files "INSTALL" or "docs/BUILD" for installation + instructions. - Note that the FreeType 2 documentation is now available as a separate - package from our sites. See: + Note that the FreeType 2 documentation is now available as a + separate package from our sites. See: ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.6.tar.bz2 ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.6.tar.gz diff --git a/README.UNX b/README.UNX index 933f599fa..5b113dc1a 100644 --- a/README.UNX +++ b/README.UNX @@ -1,109 +1,104 @@ -SPECIAL NOTE FOR UNIX USERS: -============================ - If you're installing this release of FreeType on a system that - already uses release 2.0.5 (or even an older version), you'll - need to perform a few special steps to ensure that everything - goes well: - - - I. Enable the TrueType bytecode hinter if you need it: - ------------------------------------------------------ - - The TrueType bytecode interpreter is disabled in all - public releases of the FreeType packages for patents - reasons (see www.freetype.org/patents.html for more - details). +SPECIAL NOTE FOR UNIX USERS +=========================== + + If you are installing this release of FreeType on a system that + already uses release 2.0.5 (or even an older version), you have to + perform a few special steps to ensure that everything goes well. + + + I. Enable the TrueType bytecode hinter if you need it + ----------------------------------------------------- + + The TrueType bytecode interpreter is disabled in all public + releases of the FreeType packages for patents reasons (see + http://www.freetype.org/patents.html for more details). - However, many Linux distributions do enable the - interpreter in the FreeType packages (DEB/RPM/etc..) they - produce for their platforms. If you're using TrueType fonts - on your system, you'll most probably want to enable it - manually by doing the following: + However, many Linux distributions do enable the interpreter in the + FreeType packages (DEB/RPM/etc.) they produce for their platforms. + If you are using TrueType fonts on your system, you most probably + want to enable it manually by doing the following: - open the file "include/freetype/config/ftoption.h" - locate a line that says: - #undef TT_CONFIG_OPTION_BYTECODE_ITNERPRETER + #undef TT_CONFIG_OPTION_BYTECODE_ITNERPRETER - change it to: #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER - of course, this must be done _before_ compiling the - library + of course, this must be done _before_ compiling the library - II. Determine the correct installation path: - -------------------------------------------- + II. Determine the correct installation path + ------------------------------------------- - By default, the source package will install the library - in "/usr/local". However, many Unix distributions now - install the library in "/usr", since FreeType is becoming - a critical system component - + By default, the source package will install the library in + "/usr/local". However, many Unix distributions now install the + library in "/usr", since FreeType is becoming a critical system + component. If FreeType is already installed on your system, type - freetype-config --prefix + freetype-config --prefix - on the command line. This should return the installation - path to use below (e.g. "/usr" or "/usr/local"). Otherwise, - simply use "/usr" + on the command line. This should return the installation path to + use below (e.g. "/usr" or "/usr/local"). Otherwise, simply use + "/usr". + + Then, to build and install the library, type: + make setup unix CFG="--prefix=" + make + make install (as root) - then, to build and install the library, type: - - make setup unix CFG="--prefix=" - make - make install (as root) - - where "" must be replaced by the prefix returned - by the "freetype-config" command. + where "" must be replaced by the prefix returned by + the "freetype-config" command. - III. Take care of XFree86 4: - ---------------------------- + III. Take care of XFree86 version 4 + ----------------------------------- - Certain recent Linux distributions will install _several_ - versions of FreeType on your system.. For example, on a - fresh Mandrake 8.1 system, you'll find the following files: + Certain recent Linux distributions will install _several_ versions + of FreeType on your system. For example, on a fresh Mandrake 8.1 + system, you can find the following files: - /usr/lib/libfreetype.so which links to - /usr/lib/libfreetype.6.1.0.so + /usr/lib/libfreetype.so which links to + /usr/lib/libfreetype.6.1.0.so - and: + and - /usr/X11R6/lib/libfreetype.so which links to - /usr/X11R6/lib/libfreetype.6.0.so + /usr/X11R6/lib/libfreetype.so which links to + /usr/X11R6/lib/libfreetype.6.0.so - note that these files correspond to two distinct versions of - the library ! It seems that this surprising issue is due to - the install scripts of recent XFree86 servers (from 4.1.0) - which irremediably install their own (dated) version of - the library in "/usr/X11R6/lib" + Note that these files correspond to two distinct versions of the + library! It seems that this surprising issue is due to the + install scripts of recent XFree86 servers (from 4.1.0) which + irremediably install their own (dated) version of the library in + "/usr/X11R6/lib". - In certain _rare_ cases, you may experience minor problems if - you install this release of the library in "/usr" only, namely, - that certain applications will not benefit from the bug fixes - and rendering improvements you'd expect.. + In certain _rare_ cases you may experience minor problems if you + install this release of the library in "/usr" only, namely, that + certain applications will not benefit from the bug fixes and + rendering improvements you'd expect. - There are two good ways to deal with such nasty systems: + There are two good ways to deal with this situation: - - install the library _twice_, in "/usr" and in "/usr/X11R6" - (you'll need to do that each time you install a new - FreeType release though) + - Install the library _twice_, in "/usr" and in "/usr/X11R6" + (you have to do that each time you install a new FreeType + release though). - - change the link in /usr/X11R6/lib/libfreetype.so to point - to /usr/lib/libfreetype.so, and get rid of - /usr/X11R6/lib/libfreetype.6.0.so + - Change the link in /usr/X11R6/lib/libfreetype.so to point to + /usr/lib/libfreetype.so, - The FreeType Team is not responsible for this mess, so please contact - either the XFree86 development team or your Linux distributor to help - clear this issue.., or if the above information doesn't help.. + and get rid of + /usr/X11R6/lib/libfreetype.6.0.so - - \ No newline at end of file + The FreeType Team is not responsible for this problem, so please + contact either the XFree86 development team or your Linux + distributor to help clear this issue in case the information given + here doesn't help. diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c index 1db7c9614..8157a6840 100644 --- a/src/truetype/ttgload.c +++ b/src/truetype/ttgload.c @@ -240,6 +240,7 @@ FT_Stream stream = loader->stream; FT_Int byte_len = loader->byte_len - 10; + if ( byte_len < 0 ) return TT_Err_Invalid_Outline; @@ -281,8 +282,9 @@ short* cur = gloader->current.outline.contours; short* limit = cur + n_contours; - /* check room for contours array + instructions count */ - byte_len -= 2*(n_contours+1); + + /* check space for contours array + instructions count */ + byte_len -= 2 * ( n_contours + 1 ); if ( byte_len < 0 ) goto Invalid_Outline; @@ -376,12 +378,12 @@ { if ( *flag & 2 ) byte_len -= 1; - else if ( (*flag & 16) == 0 ) + else if ( ( *flag & 16 ) == 0 ) byte_len -= 2; if ( *flag & 4 ) byte_len -= 1; - else if ( (*flag & 32) == 0 ) + else if ( ( *flag & 32 ) == 0 ) byte_len -= 2; } @@ -389,7 +391,6 @@ goto Invalid_Outline; } - /* reading the X coordinates */ { @@ -487,7 +488,7 @@ if ( error ) goto Fail; - /* check room */ + /* check space */ byte_len -= 4; if ( byte_len < 0 ) goto Invalid_Composite; @@ -499,7 +500,7 @@ subglyph->flags = GET_UShort(); subglyph->index = GET_UShort(); - /* check room */ + /* check space */ byte_len -= 2; if ( subglyph->flags & ARGS_ARE_WORDS ) byte_len -= 2; @@ -823,7 +824,7 @@ goto Exit; } - loader->byte_len = (FT_Int) count; + loader->byte_len = (FT_Int)count; #if 0 /* temporary hack */