From 01bc6e703afde131cee27f5fd6471ad3790defa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Marchesin?= Date: Fri, 7 Oct 2011 18:46:49 -0700 Subject: [PATCH] Import gdk-pixbuf. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is needed to update gtk+, which is needed for Xi2 events. Change-Id: Ieca0e1d6d09792ebca4ed46ad8d1c25a6aeb7f33 Reviewed-on: http://gerrit.chromium.org/gerrit/9763 Tested-by: Stéphane Marchesin Reviewed-by: Daniel Kurtz --- .../gdk-pixbuf-2.21.4-fix-automagic-x11.patch | 24 +++++ .../gdk-pixbuf-2.22.1-CVE-2011-2485.patch | 56 +++++++++++ .../gdk-pixbuf-2.22.1-fix-libpng15.patch | 67 +++++++++++++ .../gdk-pixbuf/gdk-pixbuf-2.22.1-r2.ebuild | 96 +++++++++++++++++++ 4 files changed, 243 insertions(+) create mode 100644 sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.21.4-fix-automagic-x11.patch create mode 100644 sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.22.1-CVE-2011-2485.patch create mode 100644 sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.22.1-fix-libpng15.patch create mode 100644 sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/gdk-pixbuf-2.22.1-r2.ebuild diff --git a/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.21.4-fix-automagic-x11.patch b/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.21.4-fix-automagic-x11.patch new file mode 100644 index 0000000000..ae7ec2c905 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.21.4-fix-automagic-x11.patch @@ -0,0 +1,24 @@ +Adds a new configure option to remove the automagic dependency on libX11. + +--- configure.ac ++++ configure.ac +@@ -929,7 +929,18 @@ GDK_PIXBUF_XLIB_PACKAGES= + GDK_PIXBUF_XLIB_EXTRA_CFLAGS= + GDK_PIXBUF_XLIB_EXTRA_LIBS= + +-if $PKG_CONFIG --exists x11; then ++AC_ARG_WITH(x11, ++ AC_HELP_STRING([--with-x11=@<:@no/auto/yes@:>@], ++ [build X11 support @<:@default=auto@:>@]),, ++ [ ++ if $PKG_CONFIG --exists x11; then ++ with_x11=yes ++ else ++ with_x11=no ++ fi ++ ]) ++ ++if test x$with_x11 = xyes; then + AM_CONDITIONAL(USE_X11, true) + PKG_CHECK_MODULES(GDK_PIXBUF_XLIB_DEP, x11 gobject-2.0) + else diff --git a/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.22.1-CVE-2011-2485.patch b/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.22.1-CVE-2011-2485.patch new file mode 100644 index 0000000000..6c5e93348f --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.22.1-CVE-2011-2485.patch @@ -0,0 +1,56 @@ +From f8569bb13e2aa1584dde61ca545144750f7a7c98 Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Fri, 24 Jun 2011 05:09:35 +0000 +Subject: GIF: Don't return a partially initialized pixbuf structure + +It was found that gdk-pixbuf GIF image loader gdk_pixbuf__gif_image_load() +routine did not properly handle certain return values from their subroutines. +A remote attacker could provide a specially-crafted GIF image, which once +opened in an application, linked against gdk-pixbuf would lead to gdk-pixbuf +to return partially initialized pixbuf structure, possibly having huge +width and height, leading to that particular application termination due +excessive memory use. + +The CVE identifier of CVE-2011-2485 has been assigned to this issue. +--- +diff --git a/gdk-pixbuf/io-gif.c b/gdk-pixbuf/io-gif.c +index 0b370ee..8a1fa3e 100644 +--- a/gdk-pixbuf/io-gif.c ++++ b/gdk-pixbuf/io-gif.c +@@ -1455,6 +1455,7 @@ gdk_pixbuf__gif_image_load (FILE *file, GError **error) + { + GifContext *context; + GdkPixbuf *pixbuf; ++ gint retval; + + g_return_val_if_fail (file != NULL, NULL); + +@@ -1472,19 +1473,25 @@ gdk_pixbuf__gif_image_load (FILE *file, GError **error) + context->error = error; + context->stop_after_first_frame = TRUE; + +- if (gif_main_loop (context) == -1 || context->animation->frames == NULL) { ++ retval = gif_main_loop (context); ++ if (retval == -1 || context->animation->frames == NULL) { + if (context->error && *(context->error) == NULL) + g_set_error_literal (context->error, + GDK_PIXBUF_ERROR, + GDK_PIXBUF_ERROR_CORRUPT_IMAGE, + _("GIF file was missing some data (perhaps it was truncated somehow?)")); + } ++ else if (retval == -2) { ++ pixbuf = NULL; ++ goto out; ++ } + + pixbuf = gdk_pixbuf_animation_get_static_image (GDK_PIXBUF_ANIMATION (context->animation)); + + if (pixbuf) + g_object_ref (pixbuf); + ++out: + g_object_unref (context->animation); + + g_free (context->buf); +-- +cgit v0.9 diff --git a/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.22.1-fix-libpng15.patch b/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.22.1-fix-libpng15.patch new file mode 100644 index 0000000000..424938e815 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.22.1-fix-libpng15.patch @@ -0,0 +1,67 @@ +From e6a5b2472a4a5d554b587dfcb798b95035caa6fd Mon Sep 17 00:00:00 2001 +From: Maarten Bosmans +Date: Mon, 24 Jan 2011 10:39:22 +0000 +Subject: Use png_jmpbuf macro + +This makes the png loader compatible with libpng 1.5 +--- +diff --git a/gdk-pixbuf/io-png.c b/gdk-pixbuf/io-png.c +index 79c81fd..76f3304 100644 +--- a/gdk-pixbuf/io-png.c ++++ b/gdk-pixbuf/io-png.c +@@ -183,7 +183,7 @@ png_simple_error_callback(png_structp png_save_ptr, + error_msg); + } + +- longjmp (png_save_ptr->jmpbuf, 1); ++ longjmp (png_jmpbuf(png_save_ptr), 1); + } + + static void +@@ -287,7 +287,7 @@ gdk_pixbuf__png_image_load (FILE *f, GError **error) + return NULL; + } + +- if (setjmp (png_ptr->jmpbuf)) { ++ if (setjmp (png_jmpbuf(png_ptr))) { + g_free (rows); + + if (pixbuf) +@@ -459,7 +459,7 @@ gdk_pixbuf__png_image_begin_load (GdkPixbufModuleSizeFunc size_func, + return NULL; + } + +- if (setjmp (lc->png_read_ptr->jmpbuf)) { ++ if (setjmp (png_jmpbuf(lc->png_read_ptr))) { + if (lc->png_info_ptr) + png_destroy_read_struct(&lc->png_read_ptr, NULL, NULL); + g_free(lc); +@@ -531,7 +531,7 @@ gdk_pixbuf__png_image_load_increment(gpointer context, + lc->error = error; + + /* Invokes our callbacks as needed */ +- if (setjmp (lc->png_read_ptr->jmpbuf)) { ++ if (setjmp (png_jmpbuf(lc->png_read_ptr))) { + lc->error = NULL; + return FALSE; + } else { +@@ -769,7 +769,7 @@ png_error_callback(png_structp png_read_ptr, + error_msg); + } + +- longjmp (png_read_ptr->jmpbuf, 1); ++ longjmp (png_jmpbuf(png_read_ptr), 1); + } + + static void +@@ -978,7 +978,7 @@ static gboolean real_save_png (GdkPixbuf *pixbuf, + success = FALSE; + goto cleanup; + } +- if (setjmp (png_ptr->jmpbuf)) { ++ if (setjmp (png_jmpbuf(png_ptr))) { + success = FALSE; + goto cleanup; + } +-- +cgit v0.9 diff --git a/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/gdk-pixbuf-2.22.1-r2.ebuild b/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/gdk-pixbuf-2.22.1-r2.ebuild new file mode 100644 index 0000000000..f1e68a818c --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/x11-libs/gdk-pixbuf/gdk-pixbuf-2.22.1-r2.ebuild @@ -0,0 +1,96 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/x11-libs/gdk-pixbuf/gdk-pixbuf-2.22.1-r2.ebuild,v 1.8 2011/10/03 08:54:19 lxnay Exp $ + +EAPI="3" + +inherit gnome.org multilib libtool autotools + +DESCRIPTION="Image loading library for GTK+" +HOMEPAGE="http://www.gtk.org/" + +LICENSE="LGPL-2" +SLOT="2" +KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 sh sparc x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +IUSE="+X debug doc +introspection jpeg jpeg2k svg tiff test" + +# librsvg blocker is for the new pixbuf loader API, you lose icons otherwise +RDEPEND=" + >=dev-libs/glib-2.25.15 + >=media-libs/libpng-1.2.44 + introspection? ( >=dev-libs/gobject-introspection-0.9.3 ) + jpeg? ( virtual/jpeg ) + jpeg2k? ( media-libs/jasper ) + tiff? ( >=media-libs/tiff-3.9.2 ) + X? ( x11-libs/libX11 ) + ! "${tmp_file}" + if [ "${?}" = "0" ]; then + cat "${tmp_file}" > "${EROOT}usr/$(get_libdir)/gdk-pixbuf-2.0/2.10.0/loaders.cache" + fi + rm "${tmp_file}" + + if [ -e "${EROOT}"usr/lib/gtk-2.0/2.*/loaders ]; then + elog "You need to rebuild ebuilds that installed into" "${EROOT}"usr/lib/gtk-2.0/2.*/loaders + elog "to do that you can use qfile from portage-utils:" + elog "emerge -va1 \$(qfile -qC ${EPREFIX}/usr/lib/gtk-2.0/2.*/loaders)" + fi +}