forked from pool/freetype2
This commit is contained in:
parent
a143330a32
commit
8431d69e3e
120
freetype2-2.5.3-fix-pcf.patch
Normal file
120
freetype2-2.5.3-fix-pcf.patch
Normal file
@ -0,0 +1,120 @@
|
||||
From 74af85c4b62b35e55b0ce9dec55ee10cbc4962a2 Mon Sep 17 00:00:00 2001
|
||||
From: Werner Lemberg <wl@gnu.org>
|
||||
Date: Mon, 08 Dec 2014 15:01:50 +0000
|
||||
Subject: [pcf] Fix Savannah bug #43774.
|
||||
|
||||
Work around `features' of X11's `pcfWriteFont' and `pcfReadFont'
|
||||
functions. Since the PCF format doesn't have an official
|
||||
specification, we have to exactly follow these functions' behaviour.
|
||||
|
||||
The problem was unveiled with a patch from 2014-11-06, fixing issue #43547.
|
||||
|
||||
* src/pcf/pcfread.c (pcf_read_TOC): Don't check table size for last
|
||||
element. Instead, assign real size.
|
||||
---
|
||||
diff --git a/src/pcf/pcfread.c b/src/pcf/pcfread.c
|
||||
index 998cbed..e3caf82 100644
|
||||
--- a/src/pcf/pcfread.c
|
||||
+++ b/src/pcf/pcfread.c
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
FreeType font driver for pcf fonts
|
||||
|
||||
- Copyright 2000-2010, 2012, 2013 by
|
||||
+ Copyright 2000-2010, 2012-2014 by
|
||||
Francesco Zappa Nardelli
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
@@ -78,7 +78,7 @@ THE SOFTWARE.
|
||||
FT_FRAME_START( 16 ),
|
||||
FT_FRAME_ULONG_LE( type ),
|
||||
FT_FRAME_ULONG_LE( format ),
|
||||
- FT_FRAME_ULONG_LE( size ),
|
||||
+ FT_FRAME_ULONG_LE( size ), /* rounded up to a multiple of 4 */
|
||||
FT_FRAME_ULONG_LE( offset ),
|
||||
FT_FRAME_END
|
||||
};
|
||||
@@ -95,9 +95,11 @@ THE SOFTWARE.
|
||||
FT_Memory memory = FT_FACE( face )->memory;
|
||||
FT_UInt n;
|
||||
|
||||
+ FT_ULong size;
|
||||
|
||||
- if ( FT_STREAM_SEEK ( 0 ) ||
|
||||
- FT_STREAM_READ_FIELDS ( pcf_toc_header, toc ) )
|
||||
+
|
||||
+ if ( FT_STREAM_SEEK( 0 ) ||
|
||||
+ FT_STREAM_READ_FIELDS( pcf_toc_header, toc ) )
|
||||
return FT_THROW( Cannot_Open_Resource );
|
||||
|
||||
if ( toc->version != PCF_FILE_VERSION ||
|
||||
@@ -154,14 +156,35 @@ THE SOFTWARE.
|
||||
break;
|
||||
}
|
||||
|
||||
- /* we now check whether the `size' and `offset' values are reasonable: */
|
||||
- /* `offset' + `size' must not exceed the stream size */
|
||||
+ /*
|
||||
+ * We now check whether the `size' and `offset' values are reasonable:
|
||||
+ * `offset' + `size' must not exceed the stream size.
|
||||
+ *
|
||||
+ * Note, however, that X11's `pcfWriteFont' routine (used by the
|
||||
+ * `bdftopcf' program to create PDF font files) has two special
|
||||
+ * features.
|
||||
+ *
|
||||
+ * - It always assigns the accelerator table a size of 100 bytes in the
|
||||
+ * TOC, regardless of its real size, which can vary between 34 and 72
|
||||
+ * bytes.
|
||||
+ *
|
||||
+ * - Due to the way the routine is designed, it ships out the last font
|
||||
+ * table with its real size, ignoring the TOC's size value. Since
|
||||
+ * the TOC size values are always rounded up to a multiple of 4, the
|
||||
+ * difference can be up to three bytes for all tables except the
|
||||
+ * accelerator table, for which the difference can be as large as 66
|
||||
+ * bytes.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
tables = face->toc.tables;
|
||||
- for ( n = 0; n < toc->count; n++ )
|
||||
+ size = stream->size;
|
||||
+
|
||||
+ for ( n = 0; n < toc->count - 1; n++ )
|
||||
{
|
||||
/* we need two checks to avoid overflow */
|
||||
- if ( ( tables->size > stream->size ) ||
|
||||
- ( tables->offset > stream->size - tables->size ) )
|
||||
+ if ( ( tables->size > size ) ||
|
||||
+ ( tables->offset > size - tables->size ) )
|
||||
{
|
||||
error = FT_THROW( Invalid_Table );
|
||||
goto Exit;
|
||||
@@ -169,6 +192,15 @@ THE SOFTWARE.
|
||||
tables++;
|
||||
}
|
||||
|
||||
+ /* no check of `tables->size' for last table element ... */
|
||||
+ if ( ( tables->offset > size ) )
|
||||
+ {
|
||||
+ error = FT_THROW( Invalid_Table );
|
||||
+ goto Exit;
|
||||
+ }
|
||||
+ /* ... instead, we adjust `tables->size' to the real value */
|
||||
+ tables->size = size - tables->offset;
|
||||
+
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
|
||||
{
|
||||
@@ -733,8 +765,8 @@ THE SOFTWARE.
|
||||
|
||||
FT_TRACE4(( " number of bitmaps: %d\n", nbitmaps ));
|
||||
|
||||
- /* XXX: PCF_Face->nmetrics is singed FT_Long, see pcf.h */
|
||||
- if ( face->nmetrics < 0 || nbitmaps != ( FT_ULong )face->nmetrics )
|
||||
+ /* XXX: PCF_Face->nmetrics is signed FT_Long, see pcf.h */
|
||||
+ if ( face->nmetrics < 0 || nbitmaps != (FT_ULong)face->nmetrics )
|
||||
return FT_THROW( Invalid_File_Format );
|
||||
|
||||
if ( FT_NEW_ARRAY( offsets, nbitmaps ) )
|
||||
--
|
||||
cgit v0.9.0.2
|
@ -48,6 +48,9 @@ Mon Dec 8 15:43:58 UTC 2014 - hrvoje.senjan@gmail.com
|
||||
- Rebase don-t-mark-libpng-as-required-library.patch,
|
||||
bugzilla-308961-cmex-workaround.patch, freetype2-subpixel.patch,
|
||||
freetype2-bitmap-foundry.patch and overflow.patch
|
||||
- Add freetype2-2.5.3-fix-pcf.patch from upstream to resolve
|
||||
http://savannah.nongnu.org/bugs/?43774, "Freetype 2.5.4 does not
|
||||
load ungzipped PCF fonts"
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 13 03:14:26 UTC 2014 - hrvoje.senjan@gmail.com
|
||||
|
@ -43,6 +43,8 @@ Patch200: freetype2-subpixel.patch
|
||||
Patch201: overflow.patch
|
||||
# PATCH-FIX-OPENSUSE don-t-mark-libpng-as-required-library.patch -- it is private in .pc
|
||||
Patch202: don-t-mark-libpng-as-required-library.patch
|
||||
# PATCH-FIX-UPSTREAM freetype2-2.5.3-fix-pcf.patch -- http://savannah.nongnu.org/bugs/?43774
|
||||
Patch1000: freetype2-2.5.3-fix-pcf.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%description
|
||||
@ -89,6 +91,7 @@ It also contains a small tutorial for using that library.
|
||||
%patch200 -p1
|
||||
%endif
|
||||
%patch202 -p1
|
||||
%patch1000 -p1
|
||||
|
||||
%build
|
||||
export CFLAGS="%optflags -std=gnu99 -D_GNU_SOURCE $(getconf LFS_CFLAGS)"
|
||||
|
@ -48,6 +48,9 @@ Mon Dec 8 15:43:58 UTC 2014 - hrvoje.senjan@gmail.com
|
||||
- Rebase don-t-mark-libpng-as-required-library.patch,
|
||||
bugzilla-308961-cmex-workaround.patch, freetype2-subpixel.patch,
|
||||
freetype2-bitmap-foundry.patch and overflow.patch
|
||||
- Add freetype2-2.5.3-fix-pcf.patch from upstream to resolve
|
||||
http://savannah.nongnu.org/bugs/?43774, "Freetype 2.5.4 does not
|
||||
load ungzipped PCF fonts"
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 13 03:14:26 UTC 2014 - hrvoje.senjan@gmail.com
|
||||
|
Loading…
x
Reference in New Issue
Block a user