Author: ken
Date: 2010-12-02 15:24:21 -0700 (Thu, 02 Dec 2010)
New Revision: 2255
Added:
trunk/freetype/freetype-2.4.3-security_fixes-1.patch
Log:
Fix for current freetype vulnerabilities.
Added: trunk/freetype/freetype-2.4.3-security_fixes-1.patch
===================================================================
--- trunk/freetype/freetype-2.4.3-security_fixes-1.patch
(rev 0)
+++ trunk/freetype/freetype-2.4.3-security_fixes-1.patch 2010-12-02
22:24:21 UTC (rev 2255)
@@ -0,0 +1,98 @@
+Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
+Date: 2010-12-02
+Initial Package Version: 2.4.3
+Upstream Status: Applied to development branch
+Origin: Upstream
+Description: fixes for CVE-2010-3311, CVE-2010-3855 (otherwise known as
+Savannah bug #31310) and for Savannah bug #31545 (no CVE number known
+for this one, was new in 2.4 series). N.B. many other vulnerabilities
+in freetype were fixed earlier in the 2.4 series, users of older versions
+should update.
+
+diff -Naur freetype-2.4.3.orig//src/base/ftobjs.c
freetype-2.4.3/src/base/ftobjs.c
+--- freetype-2.4.3.orig//src/base/ftobjs.c 2010-08-06 19:02:15.000000000
+0100
++++ freetype-2.4.3/src/base/ftobjs.c 2010-11-27 19:39:17.000000000 +0000
+@@ -1062,6 +1062,7 @@
+ if ( cur[0]->platform_id == TT_PLATFORM_APPLE_UNICODE &&
+ cur[0]->encoding_id == TT_APPLE_ID_VARIANT_SELECTOR &&
+ FT_Get_CMap_Format( cur[0] ) == 14 )
++ {
+ #ifdef FT_MAX_CHARMAP_CACHEABLE
+ if ( cur - first > FT_MAX_CHARMAP_CACHEABLE )
+ {
+@@ -1071,6 +1072,7 @@
+ }
+ #endif
+ return cur[0];
++ }
+ }
+
+ return NULL;
+diff -Naur freetype-2.4.3.orig//src/base/ftstream.c
freetype-2.4.3/src/base/ftstream.c
+--- freetype-2.4.3.orig//src/base/ftstream.c 2010-08-04 14:52:01.000000000
+0100
++++ freetype-2.4.3/src/base/ftstream.c 2010-11-27 19:20:22.000000000 +0000
+@@ -59,8 +59,17 @@
+ {
+ FT_Error error = FT_Err_Ok;
+
++ /* note that seeking to the first position after the file is valid */
++ if ( pos > stream->size )
++ {
++ FT_ERROR(( "FT_Stream_Seek:"
++ " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
++ pos, stream->size ));
++
++ error = FT_Err_Invalid_Stream_Operation;
++ }
+
+- if ( stream->read )
++ if ( !error && stream->read )
+ {
+ if ( stream->read( stream, pos, 0, 0 ) )
+ {
+@@ -71,15 +80,6 @@
+ error = FT_Err_Invalid_Stream_Operation;
+ }
+ }
+- /* note that seeking to the first position after the file is valid */
+- else if ( pos > stream->size )
+- {
+- FT_ERROR(( "FT_Stream_Seek:"
+- " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
+- pos, stream->size ));
+-
+- error = FT_Err_Invalid_Stream_Operation;
+- }
+
+ if ( !error )
+ stream->pos = pos;
+diff -Naur freetype-2.4.3.orig//src/truetype/ttgxvar.c
freetype-2.4.3/src/truetype/ttgxvar.c
+--- freetype-2.4.3.orig//src/truetype/ttgxvar.c 2010-07-12
20:03:49.000000000 +0100
++++ freetype-2.4.3/src/truetype/ttgxvar.c 2010-11-27 19:20:35.000000000
+0000
+@@ -130,7 +130,7 @@
+ FT_Int j;
+ FT_Int first;
+ FT_Memory memory = stream->memory;
+- FT_Error error = TT_Err_Ok;
++ FT_Error error = TT_Err_Ok;
+
+ FT_UNUSED( error );
+
+@@ -154,7 +154,7 @@
+ runcnt = runcnt & GX_PT_POINT_RUN_COUNT_MASK;
+ first = points[i++] = FT_GET_USHORT();
+
+- if ( runcnt < 1 )
++ if ( runcnt < 1 || i + runcnt >= n )
+ goto Exit;
+
+ /* first point not included in runcount */
+@@ -165,7 +165,7 @@
+ {
+ first = points[i++] = FT_GET_BYTE();
+
+- if ( runcnt < 1 )
++ if ( runcnt < 1 || i + runcnt >= n )
+ goto Exit;
+
+ for ( j = 0; j < runcnt; ++j )
--
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page