commit cb37f7c0f818f79ae1ad92f71b0cf2c513d43ae8
Author: Paul Flo Williams <[email protected]>
Date:   Thu Feb 7 17:57:01 2013 +0000

    Array bounds patch for reading PDFs

 fontforge-20120731-pdf-bounds.patch |   37 +++++++++++++++++++++++++++++++++++
 fontforge.spec                      |    7 +++++-
 2 files changed, 43 insertions(+), 1 deletions(-)
---
diff --git a/fontforge-20120731-pdf-bounds.patch 
b/fontforge-20120731-pdf-bounds.patch
new file mode 100644
index 0000000..400ece4
--- /dev/null
+++ b/fontforge-20120731-pdf-bounds.patch
@@ -0,0 +1,37 @@
+--- fontforge-20120731-b/fontforge/parsepdf.c  2012-08-02 16:09:09.000000000 
+0100
++++ fontforge-20120731-b-new/fontforge/parsepdf.c      2013-02-07 
17:44:05.371466086 +0000
+@@ -1691,9 +1691,9 @@
+     /* to "Unicode" values it specifies rather than to the real order in 
which the glyphs are */
+     /* stored in the file */
+     pos = cmap_from_cid || sf->map == NULL ? gid : sf->map->map[gid];
+-    sc = sf->glyphs[pos];
+     
+-    if (pos >= 0 && pos < sf->glyphcnt && (sc->unicodeenc != uvals[0] || nuni 
> 1)) {
++    if (pos >= 0 && pos < sf->glyphcnt && (sf->glyphs[pos]->unicodeenc != 
uvals[0] || nuni > 1)) {
++      sc = sf->glyphs[pos];
+       /* Sometimes FF instead of assigning proper Unicode values to TTF 
glyphs keeps */
+       /* them encoded to the same codepoint, but creates for each glyph an 
alternate */
+       /* encoding, corresponding to the position this glyph has in the font's 
encoding */
+@@ -1723,6 +1723,7 @@
+     FILE *file;
+     int i, j, gid, start, end, uni, cur=0, nuni, nhex, nchars, lo, *uvals;
+     long *mappings;
++    size_t num_mappings;
+     char tok[200], *ccval, prevtok[200];
+     SplineFont *sf = basesf->subfontcnt > 0 ? basesf->subfonts[0] : basesf;
+ 
+@@ -1733,9 +1734,14 @@
+ return;
+     rewind(file);
+     
++    num_mappings = sf->glyphcnt;
+     mappings = gcalloc(sf->glyphcnt,sizeof(long));
+     while ( pdf_getprotectedtok(file,tok) >= 0 ) {
+       if ( strcmp(tok,"beginbfchar") == 0 && sscanf(prevtok,"%d",&nchars)) {
++          if (cur + nchars >= num_mappings) {
++              num_mappings = cur + nchars;
++              mappings = grealloc(mappings, num_mappings * sizeof(long));
++          }
+           for (i=0; i<nchars; i++) {
+               if (pdf_skip_brackets(file,tok) >= 0 && sscanf(tok,"%x",&gid) &&
+                   pdf_skip_brackets(file,tok) >= 0 && 
sscanf(tok,"%lx",&mappings[cur])) {
diff --git a/fontforge.spec b/fontforge.spec
index 77f4e75..0ffa719 100644
--- a/fontforge.spec
+++ b/fontforge.spec
@@ -5,7 +5,7 @@
 
 Name:           fontforge
 Version:        20120731b
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        Outline and bitmap font editor
 
 Group:          Applications/Publishing
@@ -14,6 +14,7 @@ URL:            http://fontforge.sourceforge.net/
 Source0:        
http://downloads.sourceforge.net/fontforge/fontforge_full-%{archive_version}.tar.bz2
 Source2:        
http://downloads.sourceforge.net/fontforge/fontforge_htdocs-%{archive_version}.tar.bz2
 Patch1:         fontforge-20090224-pythondl.patch
+Patch2:         fontforge-20120731-pdf-bounds.patch
 
 Requires:       xdg-utils
 Requires:       autotrace
@@ -54,6 +55,7 @@ to compile applications against fontforge.
 %setup -q -n %{name}-%{archive_version}
 
 %patch1 -p1
+%patch2 -p1
 
 mkdir htdocs
 tar xjf %{SOURCE2} -C htdocs
@@ -146,6 +148,9 @@ fi
 %{_libdir}/pkgconfig/*.pc
 
 %changelog
+* Thu Feb 07 2013 Paul Flo Williams <[email protected]> - 20120731b-4
+- Patch for bug #902089, out-of-bounds errors while reading PDFs
+
 * Fri Jan 18 2013 Adam Tkac <atkac redhat com> - 20120731b-3
 - rebuild due to "jpeg8-ABI" feature drop
 
_______________________________________________
fonts-bugs mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/fonts-bugs
http://fonts.fedoraproject.org/

Reply via email to