public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Pacho Ramos" <pacho@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: gnome-base/librsvg/, gnome-base/librsvg/files/
Date: Sun, 28 Feb 2016 12:02:52 +0000 (UTC)	[thread overview]
Message-ID: <1456660948.0c92c018114f9c82a85c24d43b09056e3f92eafa.pacho@gentoo> (raw)

commit:     0c92c018114f9c82a85c24d43b09056e3f92eafa
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sun Feb 28 11:25:56 2016 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sun Feb 28 12:02:28 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0c92c018

gnome-base/librsvg: Fix crashes when filters don't exist (#575496 by Andreas Grois)

Package-Manager: portage-2.2.27

 .../files/librsvg-2.40.13-filters-crash.patch      |  53 +++++++++++
 gnome-base/librsvg/librsvg-2.40.13-r1.ebuild       | 102 +++++++++++++++++++++
 2 files changed, 155 insertions(+)

diff --git a/gnome-base/librsvg/files/librsvg-2.40.13-filters-crash.patch b/gnome-base/librsvg/files/librsvg-2.40.13-filters-crash.patch
new file mode 100644
index 0000000..f5503d1
--- /dev/null
+++ b/gnome-base/librsvg/files/librsvg-2.40.13-filters-crash.patch
@@ -0,0 +1,53 @@
+From d937c691678803ceda6be701587d997ccd03a1da Mon Sep 17 00:00:00 2001
+From: Benjamin Otte <otte@redhat.com>
+Date: Fri, 29 Jan 2016 12:49:55 +0100
+Subject: Don't crash when filters don't exist
+
+We put a new surface on the stack if a filter existed by name but we
+didn't pop it if the name didn't resolve to a real filter.
+
+New test: crash/bug759084.svg
+
+https://bugzilla.gnome.org/show_bug.cgi?id=759084
+---
+ rsvg-cairo-draw.c                  | 6 +++---
+ tests/fixtures/crash/bug759084.svg | 9 +++++++++
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+ create mode 100644 tests/fixtures/crash/bug759084.svg
+
+diff --git a/rsvg-cairo-draw.c b/rsvg-cairo-draw.c
+index 4d8fbc2..4152cb7 100644
+--- a/rsvg-cairo-draw.c
++++ b/rsvg-cairo-draw.c
+@@ -819,10 +819,10 @@ rsvg_cairo_pop_render_stack (RsvgDrawingCtx * ctx)
+         cairo_surface_t *output;
+ 
+         filter = rsvg_acquire_node (ctx, state->filter);
+-        if (filter && RSVG_NODE_TYPE (filter) == RSVG_NODE_TYPE_FILTER) {
+-            output = render->surfaces_stack->data;
+-            render->surfaces_stack = g_list_delete_link (render->surfaces_stack, render->surfaces_stack);
++        output = render->surfaces_stack->data;
++        render->surfaces_stack = g_list_delete_link (render->surfaces_stack, render->surfaces_stack);
+ 
++        if (filter && RSVG_NODE_TYPE (filter) == RSVG_NODE_TYPE_FILTER) {
+             needs_destroy = TRUE;
+             surface = rsvg_filter_render ((RsvgFilter *) filter, output, ctx, &render->bbox, "2103");
+             /* Don't destroy the output surface, it's owned by child_cr */
+diff --git a/tests/fixtures/crash/bug759084.svg b/tests/fixtures/crash/bug759084.svg
+new file mode 100644
+index 0000000..9e8f8f1
+--- /dev/null
++++ b/tests/fixtures/crash/bug759084.svg
+@@ -0,0 +1,9 @@
++<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10">
++  <defs>
++    <filter id="filter">
++    </filter>
++  </defs>
++  <g filter="url(#filter)">
++    <rect fill="red" width="10" height="10" filter="url(#doesnotexist)" />
++  </g>
++</svg>
+-- 
+cgit v0.12
+

diff --git a/gnome-base/librsvg/librsvg-2.40.13-r1.ebuild b/gnome-base/librsvg/librsvg-2.40.13-r1.ebuild
new file mode 100644
index 0000000..7a0f5bc
--- /dev/null
+++ b/gnome-base/librsvg/librsvg-2.40.13-r1.ebuild
@@ -0,0 +1,102 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+GCONF_DEBUG="no"
+GNOME2_LA_PUNT="yes"
+VALA_USE_DEPEND="vapigen"
+
+inherit autotools gnome2 multilib-minimal vala
+
+DESCRIPTION="Scalable Vector Graphics (SVG) rendering library"
+HOMEPAGE="https://wiki.gnome.org/Projects/LibRsvg"
+
+LICENSE="LGPL-2"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~arm-linux ~x86-linux ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
+
+IUSE="+introspection vala tools"
+REQUIRED_USE="vala? ( introspection )"
+
+RDEPEND="
+	>=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}]
+	>=x11-libs/cairo-1.12.14-r4[${MULTILIB_USEDEP}]
+	>=x11-libs/pango-1.36.3[${MULTILIB_USEDEP}]
+	>=dev-libs/libxml2-2.9.1-r4:2[${MULTILIB_USEDEP}]
+	>=dev-libs/libcroco-0.6.8-r1[${MULTILIB_USEDEP}]
+	>=x11-libs/gdk-pixbuf-2.30.7:2[introspection?,${MULTILIB_USEDEP}]
+	introspection? ( >=dev-libs/gobject-introspection-0.10.8:= )
+	tools? ( >=x11-libs/gtk+-3.10.0:3 )
+"
+DEPEND="${RDEPEND}
+	dev-libs/gobject-introspection-common
+	dev-libs/vala-common
+	>=dev-util/gtk-doc-am-1.13
+	>=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+	vala? ( $(vala_depend) )
+"
+# >=gtk-doc-am-1.13, gobject-introspection-common, vala-common needed by eautoreconf
+
+src_prepare() {
+	# https://bugzilla.gnome.org/show_bug.cgi?id=653323
+	epatch "${FILESDIR}/${PN}-2.40.12-gtk-optional.patch"
+
+	# https://bugzilla.gnome.org/show_bug.cgi?id=731826
+	epatch "${FILESDIR}/${PN}-2.40.2-vala-out-of-source.patch"
+
+	# Don't crash when filters don't exist (included in next release)
+	epatch "${FILESDIR}/${P}-filters-crash.patch"
+
+	eautoreconf
+
+	use vala && vala_src_prepare
+	gnome2_src_prepare
+}
+
+multilib_src_configure() {
+	local myconf=()
+
+	# -Bsymbolic is not supported by the Darwin toolchain
+	if [[ ${CHOST} == *-darwin* ]]; then
+		myconf+=( --disable-Bsymbolic )
+	fi
+
+	# --disable-tools even when USE=tools; the tools/ subdirectory is useful
+	# only for librsvg developers
+	ECONF_SOURCE=${S} \
+	gnome2_src_configure \
+		--disable-static \
+		--disable-tools \
+		$(multilib_native_use_enable introspection) \
+		$(multilib_native_use_with tools gtk3) \
+		$(multilib_native_use_enable vala) \
+		--enable-pixbuf-loader \
+		"${myconf[@]}"
+
+	if multilib_is_native_abi; then
+		ln -s "${S}"/doc/html doc/html || die
+	fi
+}
+
+multilib_src_compile() {
+	# causes segfault if set, see bug #411765
+	unset __GL_NO_DSO_FINALIZER
+	gnome2_src_compile
+}
+
+multilib_src_install() {
+	gnome2_src_install
+}
+
+pkg_postinst() {
+	# causes segfault if set, see bug 375615
+	unset __GL_NO_DSO_FINALIZER
+	multilib_foreach_abi gnome2_pkg_postinst
+}
+
+pkg_postrm() {
+	# causes segfault if set, see bug 375615
+	unset __GL_NO_DSO_FINALIZER
+	multilib_foreach_abi gnome2_pkg_postrm
+}


             reply	other threads:[~2016-02-28 12:02 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-28 12:02 Pacho Ramos [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-05-26  8:36 [gentoo-commits] repo/gentoo:master commit in: gnome-base/librsvg/, gnome-base/librsvg/files/ Sam James
2022-05-13 12:23 Matt Turner
2020-01-11 20:01 Mart Raudsepp
2017-01-09 11:50 Mart Raudsepp
2016-04-03 12:42 Pacho Ramos
2015-12-12 14:29 Pacho Ramos
2015-12-12 14:29 Pacho Ramos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1456660948.0c92c018114f9c82a85c24d43b09056e3f92eafa.pacho@gentoo \
    --to=pacho@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox