[arch-commits] Commit in evince/trunk (3 files)

Ionut Biru ibiru at archlinux.org
Sun Feb 6 13:35:23 UTC 2011


    Date: Sunday, February 6, 2011 @ 08:35:23
  Author: ibiru
Revision: 109139

upgpkg: evince 2.32.0-7
fix segmentation on exit when using poppler 0.16 and fix some security vulnerabilities in dvi-backend

Added:
  evince/trunk/security_issues_in_dvi-backend.patch
  evince/trunk/update_to_poppler_api.patch
Modified:
  evince/trunk/PKGBUILD

--------------------------------------+
 PKGBUILD                             |   17 ++++-
 security_issues_in_dvi-backend.patch |   97 +++++++++++++++++++++++++++++++++
 update_to_poppler_api.patch          |   58 +++++++++++++++++++
 3 files changed, 168 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-02-06 13:34:47 UTC (rev 109138)
+++ PKGBUILD	2011-02-06 13:35:23 UTC (rev 109139)
@@ -3,7 +3,7 @@
 
 pkgname=evince
 pkgver=2.32.0
-pkgrel=6
+pkgrel=7
 pkgdesc="Simply a document viewer"
 url="http://projects.gnome.org/evince/"
 arch=('i686' 'x86_64')
@@ -11,17 +11,26 @@
 depends=('libspectre>=0.2.6' 'gsfonts' 'poppler-glib>=0.16.2' 'libdjvu>=3.5.22' 'gnome-icon-theme>=2.31.0' 't1lib' 'libgnome-keyring>=2.32.0' 'desktop-file-utils' 'gconf' 'dconf')
 ## gconf still needed
 ## https://bugzilla.gnome.org/show_bug.cgi?id=628945
-makedepends=('gnome-doc-utils>=0.20.1' 'nautilus>=2.32.0' 'pkgconfig' 'texlive-bin' 'intltool' 'gobject-introspection')
+makedepends=('gnome-doc-utils>=0.20.1' 'nautilus>=2.32.0' 'pkgconfig' 'texlive-bin' 'intltool' 'gobject-introspection' 'gnome-common' 'gtk-doc')
 optdepends=('texlive-bin: DVI support')
 replaces=('gpdf')
 groups=('gnome-extra')
 install=evince.install
 options=('!libtool' '!emptydirs')
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
-sha256sums=('2a4c91ae38f8b5028cebb91b9da9ddc50ea8ae3f3d429df89ba351da2d787ff7')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+        update_to_poppler_api.patch
+        security_issues_in_dvi-backend.patch)
+sha256sums=('2a4c91ae38f8b5028cebb91b9da9ddc50ea8ae3f3d429df89ba351da2d787ff7'
+            '2990c789c8cfd50e46f4dfa7a2406499b3ee26f4db9840c8b9a6e1dee40f61f4'
+            '49d1ed8adc734a005d4d8fdc1912bb115d97f734071d64bcae0aae60f2b5626a')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -Np1 -i "${srcdir}/update_to_poppler_api.patch"
+  patch -Np1 -i "${srcdir}/security_issues_in_dvi-backend.patch"
+
+  ./autogen.sh
+
   ./configure --prefix=/usr --sysconfdir=/etc \
       --localstatedir=/var --libexecdir=/usr/lib/evince \
       --disable-static --enable-nautilus \

Added: security_issues_in_dvi-backend.patch
===================================================================
--- security_issues_in_dvi-backend.patch	                        (rev 0)
+++ security_issues_in_dvi-backend.patch	2011-02-06 13:35:23 UTC (rev 109139)
@@ -0,0 +1,97 @@
+From 8e473c9796b9a61b811213e7892fd36fd570303a Mon Sep 17 00:00:00 2001
+From: José Aliste <jaliste at src.gnome.org>
+Date: Tue, 07 Dec 2010 18:56:47 +0000
+Subject: backends: Fix several security issues in the dvi-backend.
+
+See CVE-2010-2640, CVE-2010-2641, CVE-2010-2642 and  CVE-2010-2643.
+---
+diff --git a/backend/dvi/mdvi-lib/afmparse.c b/backend/dvi/mdvi-lib/afmparse.c
+index 164366b..361e23d 100644
+--- a/backend/dvi/mdvi-lib/afmparse.c
++++ b/backend/dvi/mdvi-lib/afmparse.c
+@@ -160,7 +160,7 @@ static char *token(FILE *stream)
+     
+     idx = 0;
+     while (ch != EOF && ch != ' ' && ch != lineterm 
+-           && ch != '\t' && ch != ':' && ch != ';') 
++           && ch != '\t' && ch != ':' && ch != ';' && idx < MAX_NAME)
+     {
+         ident[idx++] = ch;
+         ch = fgetc(stream);
+diff --git a/backend/dvi/mdvi-lib/dviread.c b/backend/dvi/mdvi-lib/dviread.c
+index 97b7b84..ac98068 100644
+--- a/backend/dvi/mdvi-lib/dviread.c
++++ b/backend/dvi/mdvi-lib/dviread.c
+@@ -1537,6 +1537,10 @@ int	special(DviContext *dvi, int opcode)
+ 	Int32	arg;
+ 	
+ 	arg = dugetn(dvi, opcode - DVI_XXX1 + 1);
++	if (arg <= 0) {
++		dvierr(dvi, _("malformed special length\n"));
++		return -1;
++	}
+ 	s = mdvi_malloc(arg + 1);
+ 	dread(dvi, s, arg);
+ 	s[arg] = 0;
+diff --git a/backend/dvi/mdvi-lib/pk.c b/backend/dvi/mdvi-lib/pk.c
+index a579186..08377e6 100644
+--- a/backend/dvi/mdvi-lib/pk.c
++++ b/backend/dvi/mdvi-lib/pk.c
+@@ -469,6 +469,15 @@ static int pk_load_font(DviParams *unused, DviFont *font)
+ 			}
+ 			if(feof(p))
+ 				break;
++
++			/* Although the PK format support bigger char codes,
++                         * XeTeX and other extended TeX engines support charcodes up to
++                         * 65536, while normal TeX engine supports only charcode up to 255.*/
++			if (cc < 0 || cc > 65536) {
++				mdvi_error (_("%s: unexpected charcode (%d)\n"),
++					    font->fontname,cc);
++				goto error;
++			} 
+ 			if(cc < loc)
+ 				loc = cc;
+ 			if(cc > hic)
+@@ -512,7 +521,7 @@ static int pk_load_font(DviParams *unused, DviFont *font)
+ 	}
+ 
+ 	/* resize font char data */
+-	if(loc > 0 || hic < maxch-1) {
++	if(loc > 0 && hic < maxch-1) {
+ 		memmove(font->chars, font->chars + loc, 
+ 			(hic - loc + 1) * sizeof(DviFontChar));
+ 		font->chars = xresize(font->chars,
+diff --git a/backend/dvi/mdvi-lib/tfmfile.c b/backend/dvi/mdvi-lib/tfmfile.c
+index 73ebf26..8c2a30b 100644
+--- a/backend/dvi/mdvi-lib/tfmfile.c
++++ b/backend/dvi/mdvi-lib/tfmfile.c
+@@ -172,7 +172,8 @@ int	tfm_load_file(const char *filename, TFMInfo *info)
+ 	/* We read the entire TFM file into core */
+ 	if(fstat(fileno(in), &st) < 0)
+ 		return -1;
+-	if(st.st_size == 0)
++	/* according to the spec, TFM files are smaller than 16K */
++	if(st.st_size == 0 || st.st_size >= 16384)
+ 		goto bad_tfm;
+ 
+ 	/* allocate a word-aligned buffer to hold the file */
+diff --git a/backend/dvi/mdvi-lib/vf.c b/backend/dvi/mdvi-lib/vf.c
+index fb49847..a5ae3bb 100644
+--- a/backend/dvi/mdvi-lib/vf.c
++++ b/backend/dvi/mdvi-lib/vf.c
+@@ -165,6 +165,12 @@ static int vf_load_font(DviParams *params, DviFont *font)
+ 			cc = fuget1(p);
+ 			tfm = fuget3(p);
+ 		}
++		if (cc < 0 || cc > 65536) {
++			/* TeX engines do not support char codes bigger than 65535 */
++			mdvi_error(_("(vf) %s: unexpected character %d\n"),
++				   font->fontname, cc);
++			goto error;
++		}
+ 		if(loc < 0 || cc < loc)
+ 			loc = cc;
+ 		if(hic < 0 || cc > hic)
+--
+cgit v0.8.3.1

Added: update_to_poppler_api.patch
===================================================================
--- update_to_poppler_api.patch	                        (rev 0)
+++ update_to_poppler_api.patch	2011-02-06 13:35:23 UTC (rev 109139)
@@ -0,0 +1,58 @@
+From f77e6cf4fd7fef49ac91d8c62b6a9a993529adb8 Mon Sep 17 00:00:00 2001
+From: Carlos Garcia Campos <carlosgc at gnome.org>
+Date: Fri, 17 Sep 2010 11:21:16 +0000
+Subject: [pdf] Update to poppler api changes
+
+Linearized PopplerDocument property is now boolean rather than string.
+---
+diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
+index aa080e6..ced3ef7 100644
+--- a/backend/pdf/ev-poppler.cc
++++ b/backend/pdf/ev-poppler.cc
+@@ -722,6 +722,9 @@ pdf_document_get_info (EvDocument *document)
+ 	PopplerPermissions permissions;
+ 	EvPage *page;
+ 	char *metadata;
++#ifdef HAVE_POPPLER_DOCUMENT_IS_LINEARIZED
++	gboolean linearized;
++#endif
+ 
+ 	info = g_new0 (EvDocumentInfo, 1);
+ 
+@@ -758,7 +761,11 @@ pdf_document_get_info (EvDocument *document)
+ 		      "producer", &(info->producer),
+ 		      "creation-date", &(info->creation_date),
+ 		      "mod-date", &(info->modified_date),
++#ifdef HAVE_POPPLER_DOCUMENT_IS_LINEARIZED
++		      "linearized", &linearized,
++#else
+ 		      "linearized", &(info->linearized),
++#endif
+ 		      "metadata", &metadata,
+ 		      NULL);
+ 
+@@ -864,6 +871,10 @@ pdf_document_get_info (EvDocument *document)
+ 		info->security = g_strdup (_("No"));
+ 	}
+ 
++#ifdef HAVE_POPPLER_DOCUMENT_IS_LINEARIZED
++	info->linearized = linearized ? g_strdup (_("Yes")) : g_strdup (_("No"));
++#endif
++
+ 	return info;
+ }
+ 
+diff --git a/configure.ac b/configure.ac
+index 0faa16e..9619349 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -512,6 +512,7 @@ if test "x$enable_pdf" = "xyes"; then
+ 	    AC_CHECK_FUNCS(poppler_page_get_text_layout)
+ 	    AC_CHECK_FUNCS(poppler_page_get_selected_text)
+ 	    AC_CHECK_FUNCS(poppler_page_add_annot)
++	    AC_CHECK_FUNCS(poppler_document_is_linearized)
+ 	    LIBS=$evince_save_LIBS
+ 	    PKG_CHECK_MODULES(CAIRO_PDF, cairo-pdf, enable_cairo_pdf=yes, enable_cairo_pdf=no)
+ 	    if test x$enable_cairo_pdf = xyes; then
+--
+cgit v0.8.3.1




More information about the arch-commits mailing list