Hi guys,

Looks like it's time for another try at freetype.  CVE-2006-3467 appears to
be a potentially exploitable integer overflow in freetype's PCF parser. 
I've uploaded freetype_2.1.7-6 to
<http://people.debian.org/~vorlon/freetype-DSA/>, replacing the previous
version there; signed sources, unsigned changes.  Please do whatever's
necessary with the package to make it suitable for a DSA release -- I won't
be uploading it at all to the security.d.o dak queue, given the poor outcome
of my other recent attempts.

debdiff vs. 2.1.7-5 in stable (r3) is also attached to this mail, in case
that's more convenient.

Cheers,
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
[EMAIL PROTECTED]                                   http://www.debian.org/
diff -u freetype-2.1.7/debian/rules freetype-2.1.7/debian/rules
--- freetype-2.1.7/debian/rules
+++ freetype-2.1.7/debian/rules
@@ -178,6 +178,9 @@
        # Fix integer overflows (CVE-2006-2493)
        patch -p0 -i $(patchdir)/400-CVE-2006-2493_integer-overflows.diff
 
+       # Fix further integer overflows (CVE-2006-3467)
+       patch -p0 -i $(patchdir)/500-CVE-2006-3467_pcf-strlen.diff
+
        cd $(freetype_u) && ./configure --prefix=/usr CFLAGS=\"$(CFLAGS)\"
 #      cd $(freetype_u) && ./configure --prefix=/usr
        $(MAKE) -C $(freetype_u)
diff -u freetype-2.1.7/debian/changelog freetype-2.1.7/debian/changelog
--- freetype-2.1.7/debian/changelog
+++ freetype-2.1.7/debian/changelog
@@ -1,3 +1,12 @@
+freetype (2.1.7-6) stable-security; urgency=low
+
+  * Add debian/patches-freetype/CVE-2006-3467_pcf-strlen.patch for
+    CVE-2006-3467, a missing string length check in PCF files that
+    leads to a possibly exploitable integer overflow.  Thanks to Martin 
+    Pitt for the patch.  Closes: #379920.
+
+ -- Steve Langasek <[EMAIL PROTECTED]>  Tue, 12 Sep 2006 23:27:20 -0700
+
 freetype (2.1.7-5) stable; urgency=low
 
   * Backport the fix for bug #367579 (use CURDIR instead of PWD) so that
only in patch2:
unchanged:
--- freetype-2.1.7.orig/debian/patches/500-CVE-2006-3467_pcf-strlen.diff
+++ freetype-2.1.7/debian/patches/500-CVE-2006-3467_pcf-strlen.diff
@@ -0,0 +1,34 @@
+Index: freetype-2.1.7/src/pcf/pcfread.c
+===================================================================
+--- freetype-2.1.7.orig/src/pcf/pcfread.c      2006-07-26 12:59:30.000000000 
+0200
++++ freetype-2.1.7/src/pcf/pcfread.c   2006-07-26 12:59:46.000000000 +0200
+@@ -433,6 +433,14 @@
+ 
+     for ( i = 0; i < nprops; i++ )
+     {
++      /* 2006:0500 (mbarnes) - Detect invalid string length.
++       * XXX Is this is best error code to return? */
++      if ( props[i].name < 0 )
++      {
++        error = FT_Err_Invalid_File_Format;
++        goto Bail;
++      }
++
+       /* XXX: make atom */
+       if ( FT_NEW_ARRAY( properties[i].name,
+                          ft_strlen( strings + props[i].name ) + 1 ) )
+@@ -443,6 +451,14 @@
+ 
+       if ( props[i].isString )
+       {
++      /* 2006:0500 (mbarnes) - Detect invalid string length.
++         * XXX Is this the best error code to return? */
++        if ( props[i].value < 0 )
++        {
++          error = FT_Err_Invalid_File_Format;
++          goto Bail;
++        }
++
+         if ( FT_NEW_ARRAY( properties[i].value.atom,
+                            ft_strlen( strings + props[i].value ) + 1 ) )
+           goto Bail;

Attachment: signature.asc
Description: Digital signature

Reply via email to