Skip to content

Commit

Permalink
app-text/evince: Fix CVE-2017-1000159
Browse files Browse the repository at this point in the history
Bug: https://bugs.gentoo.org/650272
Package-Manager: Portage-2.3.28, Repoman-2.3.9
  • Loading branch information
leio committed Apr 14, 2018
1 parent 8497fe8 commit 6326120
Show file tree
Hide file tree
Showing 2 changed files with 144 additions and 0 deletions.
102 changes: 102 additions & 0 deletions app-text/evince/evince-3.24.2-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6
GNOME2_LA_PUNT="yes"

inherit gnome2 systemd

DESCRIPTION="Simple document viewer for GNOME"
HOMEPAGE="https://wiki.gnome.org/Apps/Evince"

LICENSE="GPL-2+ CC-BY-SA-3.0"
# subslot = evd3.(suffix of libevdocument3)-evv3.(suffix of libevview3)
SLOT="0/evd3.4-evv3.3"
IUSE="djvu dvi gstreamer gnome gnome-keyring +introspection nautilus nsplugin +postscript t1lib tiff xps"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~x64-solaris"

# atk used in libview
# gdk-pixbuf used all over the place
COMMON_DEPEND="
dev-libs/atk
>=dev-libs/glib-2.36:2[dbus]
>=dev-libs/libxml2-2.5:2
sys-libs/zlib:=
x11-libs/gdk-pixbuf:2
>=x11-libs/gtk+-3.16.0:3[introspection?]
gnome-base/gsettings-desktop-schemas
>=x11-libs/cairo-1.10:=
>=app-text/poppler-0.33[cairo]
djvu? ( >=app-text/djvu-3.5.22:= )
dvi? (
virtual/tex-base
dev-libs/kpathsea:=
t1lib? ( >=media-libs/t1lib-5:= ) )
gstreamer? (
media-libs/gstreamer:1.0
media-libs/gst-plugins-base:1.0
media-libs/gst-plugins-good:1.0 )
gnome? ( gnome-base/gnome-desktop:3= )
gnome-keyring? ( >=app-crypt/libsecret-0.5 )
introspection? ( >=dev-libs/gobject-introspection-1:= )
nautilus? ( >=gnome-base/nautilus-2.91.4[introspection?] )
postscript? ( >=app-text/libspectre-0.2:= )
tiff? ( >=media-libs/tiff-3.6:0= )
xps? ( >=app-text/libgxps-0.2.1:= )
"
RDEPEND="${COMMON_DEPEND}
gnome-base/gvfs
gnome-base/librsvg
|| (
>=x11-themes/adwaita-icon-theme-2.17.1
>=x11-themes/hicolor-icon-theme-0.10 )
"
DEPEND="${COMMON_DEPEND}
app-text/docbook-xml-dtd:4.3
app-text/yelp-tools
dev-util/gdbus-codegen
>=dev-util/gtk-doc-am-1.13
>=dev-util/intltool-0.35
dev-util/itstool
sys-devel/gettext
virtual/pkgconfig
"
# eautoreconf needs:
# app-text/yelp-tools

PATCHES=(
"${FILESDIR}"/${PV}-CVE-2017-1000159.patch
)

src_prepare() {
gnome2_src_prepare

# Do not depend on adwaita-icon-theme, bug #326855, #391859
# https://bugs.freedesktop.org/show_bug.cgi?id=29942
sed -e 's/adwaita-icon-theme >= $ADWAITA_ICON_THEME_REQUIRED//g' \
-i configure || die "sed failed"
}

src_configure() {
gnome2_src_configure \
--disable-static \
--enable-pdf \
--enable-comics \
--enable-thumbnailer \
--with-platform=gnome \
--enable-dbus \
$(use_enable djvu) \
$(use_enable dvi) \
$(use_enable gstreamer multimedia) \
$(use_enable gnome libgnome-desktop) \
$(use_with gnome-keyring keyring) \
$(use_enable introspection) \
$(use_enable nautilus) \
$(use_enable nsplugin browser-plugin) \
$(use_enable postscript ps) \
$(use_enable t1lib) \
$(use_enable tiff) \
$(use_enable xps) \
BROWSER_PLUGIN_DIR="${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins \
--with-systemduserunitdir="$(systemd_get_userunitdir)"
}
42 changes: 42 additions & 0 deletions app-text/evince/files/3.24.2-CVE-2017-1000159.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
From 350404c76dc8601e2cdd2636490e2afc83d3090e Mon Sep 17 00:00:00 2001
From: Tobias Mueller <[email protected]>
Date: Fri, 14 Jul 2017 12:52:14 +0200
Subject: [PATCH] dvi: Mitigate command injection attacks by quoting filename

With commit 1fcca0b8041de0d6074d7e17fba174da36c65f99 came a DVI backend.
It exports to PDF via the dvipdfm tool.
It calls that tool with the filename of the currently loaded document.
If that filename is cleverly crafted, it can escape the currently
used manual quoting of the filename. Instead of manually quoting the
filename, we use g_shell_quote.

https://bugzilla.gnome.org/show_bug.cgi?id=784947
---
backend/dvi/dvi-document.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/backend/dvi/dvi-document.c b/backend/dvi/dvi-document.c
index 4a896e21..28877700 100644
--- a/backend/dvi/dvi-document.c
+++ b/backend/dvi/dvi-document.c
@@ -300,12 +300,14 @@ dvi_document_file_exporter_end (EvFileExporter *exporter)
gboolean success;

DviDocument *dvi_document = DVI_DOCUMENT(exporter);
+ gchar* quoted_filename = g_shell_quote (dvi_document->context->filename);

- command_line = g_strdup_printf ("dvipdfm %s -o %s \"%s\"", /* dvipdfm -s 1,2,.., -o exporter_filename dvi_filename */
+ command_line = g_strdup_printf ("dvipdfm %s -o %s %s", /* dvipdfm -s 1,2,.., -o exporter_filename dvi_filename */
dvi_document->exporter_opts->str,
dvi_document->exporter_filename,
- dvi_document->context->filename);
-
+ quoted_filename);
+ g_free (quoted_filename);
+
success = g_spawn_command_line_sync (command_line,
NULL,
NULL,
--
2.17.0

0 comments on commit 6326120

Please sign in to comment.