Import gdk-pixbuf.

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 <marcheu@chromium.org>
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
This commit is contained in:
Stéphane Marchesin 2011-10-07 18:46:49 -07:00
parent 24caf3645a
commit 01bc6e703a
4 changed files with 243 additions and 0 deletions

View File

@ -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

View File

@ -0,0 +1,56 @@
From f8569bb13e2aa1584dde61ca545144750f7a7c98 Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
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

View File

@ -0,0 +1,67 @@
From e6a5b2472a4a5d554b587dfcb798b95035caa6fd Mon Sep 17 00:00:00 2001
From: Maarten Bosmans <mkbosmans@gmail.com>
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

View File

@ -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 )
!<gnome-base/gail-1000
!<gnome-base/librsvg-2.31.0
!<x11-libs/gtk+-2.21.3:2
!<x11-libs/gtk+-2.90.4:3"
DEPEND="${RDEPEND}
>=dev-util/pkgconfig-0.9
>=sys-devel/gettext-0.17
>=dev-util/gtk-doc-am-1.11
doc? (
>=dev-util/gtk-doc-1.11
~app-text/docbook-xml-dtd-4.1.2 )"
# Needed as reported in bug #363715
PDEPEND="svg? ( gnome-base/librsvg )"
src_prepare() {
# Only build against libX11 if the user wants to do so
epatch "${FILESDIR}"/${PN}-2.21.4-fix-automagic-x11.patch
# Fix libpng-1.5 compatibility, bug 354557 — taken from upstream
epatch "${FILESDIR}/${P}-fix-libpng15.patch"
# GIF: Don't return a partially initialized pixbuf structure
epatch "${FILESDIR}/${P}-CVE-2011-2485.patch"
elibtoolize
eautoreconf
}
src_configure() {
# png always on to display icons (foser)
local myconf="
$(use_enable doc gtk-doc)
$(use_with jpeg libjpeg)
$(use_with jpeg2k libjasper)
$(use_with tiff libtiff)
$(use_enable introspection)
$(use_with X x11)
--with-libpng"
# Passing --disable-debug is not recommended for production use
use debug && myconf="${myconf} --enable-debug=yes"
econf ${myconf}
}
src_install() {
emake DESTDIR="${D}" install || die
dodoc AUTHORS NEWS* README* || die
find "${ED}" -name '*.la' -exec rm -f {} +
}
pkg_postinst() {
# causes segfault if set, see bug 375615
unset __GL_NO_DSO_FINALIZER
tmp_file=$(mktemp --suffix=gdk_pixbuf_ebuild)
# be atomic!
gdk-pixbuf-query-loaders > "${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
}