summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2011-03-12 18:32:04 +0000
committerPacho Ramos <pacho@gentoo.org>2011-03-12 18:32:04 +0000
commitb67fc9169ae60f084bd892bc746c3586d257bc25 (patch)
tree7d30c9b056885746b276e85577bf0f3c14c01bad /x11-libs/pango
parentVersion bump. (diff)
downloadgentoo-2-b67fc9169ae60f084bd892bc746c3586d257bc25.tar.gz
gentoo-2-b67fc9169ae60f084bd892bc746c3586d257bc25.tar.bz2
gentoo-2-b67fc9169ae60f084bd892bc746c3586d257bc25.zip
Fix security issues: CVE-2011-0020 and CVE-2011-0064. Remove old.
(Portage version: 2.1.9.42/cvs/Linux x86_64)
Diffstat (limited to 'x11-libs/pango')
-rw-r--r--x11-libs/pango/ChangeLog11
-rw-r--r--x11-libs/pango/files/pango-1.2.5-lib64.patch30
-rw-r--r--x11-libs/pango/files/pango-1.26.0-introspection-automagic.patch214
-rw-r--r--x11-libs/pango/files/pango-1.28.3-heap-corruption.patch50
-rw-r--r--x11-libs/pango/files/pango-1.28.3-malloc-failure.patch186
-rw-r--r--x11-libs/pango/pango-1.24.5-r1.ebuild74
-rw-r--r--x11-libs/pango/pango-1.28.3-r1.ebuild (renamed from x11-libs/pango/pango-1.26.2.ebuild)42
7 files changed, 268 insertions, 339 deletions
diff --git a/x11-libs/pango/ChangeLog b/x11-libs/pango/ChangeLog
index 8c51271dc0a5..06c2c798ef72 100644
--- a/x11-libs/pango/ChangeLog
+++ b/x11-libs/pango/ChangeLog
@@ -1,6 +1,15 @@
# ChangeLog for x11-libs/pango
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-libs/pango/ChangeLog,v 1.303 2011/01/30 19:17:09 armin76 Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/pango/ChangeLog,v 1.304 2011/03/12 18:32:04 pacho Exp $
+
+*pango-1.28.3-r1 (12 Mar 2011)
+
+ 12 Mar 2011; Pacho Ramos <pacho@gentoo.org> -files/pango-1.2.5-lib64.patch,
+ -pango-1.24.5-r1.ebuild, -files/pango-1.26.0-introspection-automagic.patch,
+ -pango-1.26.2.ebuild, +pango-1.28.3-r1.ebuild,
+ +files/pango-1.28.3-heap-corruption.patch,
+ +files/pango-1.28.3-malloc-failure.patch:
+ Fix security issues: CVE-2011-0020 and CVE-2011-0064. Remove old.
30 Jan 2011; Raúl Porcel <armin76@gentoo.org> pango-1.28.3.ebuild:
alpha/arm/ia64/s390/sh/sparc stable wrt #348987
diff --git a/x11-libs/pango/files/pango-1.2.5-lib64.patch b/x11-libs/pango/files/pango-1.2.5-lib64.patch
deleted file mode 100644
index c709c270eae2..000000000000
--- a/x11-libs/pango/files/pango-1.2.5-lib64.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-#--- pango-1.2.5/pango/Makefile.am.lib64 2003-08-25 10:12:45.000000000 -0400
-#+++ pango-1.2.5/pango/Makefile.am 2003-12-08 18:43:51.000000000 -0500
-#@@ -16,6 +16,7 @@
-# -DPANGO_ENABLE_BACKEND \
-# -DPANGO_ENABLE_ENGINE \
-# -DSYSCONFDIR=\"$(sysconfdir)\" \
-#+ -DHOST=\"$(host_triplet)\" \
-# -DLIBDIR=\"$(libdir)\" \
-# -DMODULE_VERSION=\"$(PANGO_MODULE_VERSION)\" \
-# -DG_DISABLE_DEPRECATED \
---- pango-1.2.5/pango/modules.c.lib64 2002-12-06 19:54:27.000000000 -0500
-+++ pango-1.2.5/pango/modules.c 2003-12-08 18:43:51.000000000 -0500
-@@ -353,6 +353,7 @@
-
- if (!file_str)
- file_str = g_build_filename (pango_get_sysconf_subdirectory (),
-+ HOST,
- "pango.modules",
- NULL);
-
---- pango-1.2.5/pango/Makefile.in.lib64 2003-12-09 10:48:24.000000000 -0500
-+++ pango-1.2.5/pango/Makefile.in 2003-12-09 10:48:32.000000000 -0500
-@@ -135,6 +135,7 @@
- -DPANGO_ENABLE_BACKEND \
- -DPANGO_ENABLE_ENGINE \
- -DSYSCONFDIR=\"$(sysconfdir)\" \
-+ -DHOST=\"$(host_triplet)\" \
- -DLIBDIR=\"$(libdir)\" \
- -DMODULE_VERSION=\"$(PANGO_MODULE_VERSION)\" \
- -DG_DISABLE_DEPRECATED \
diff --git a/x11-libs/pango/files/pango-1.26.0-introspection-automagic.patch b/x11-libs/pango/files/pango-1.26.0-introspection-automagic.patch
deleted file mode 100644
index b699b176c094..000000000000
--- a/x11-libs/pango/files/pango-1.26.0-introspection-automagic.patch
+++ /dev/null
@@ -1,214 +0,0 @@
-Use the introspection.m4 macro for checking for introspection. Fixes automagic,
-and keeps variable name consistency across modules.
-
----
---- configure.in
-+++ configure.in
-@@ -58,6 +58,7 @@
- AM_INIT_AUTOMAKE(1.9 gnits dist-bzip2 no-dist-gzip -Wno-portability)
- m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
- AM_CONFIG_HEADER([config.h])
-+AC_CONFIG_MACRO_DIR([m4])
-
-
- PANGO_VERSION_MAJOR=pango_version_major()
-@@ -493,27 +494,7 @@
- #
- # Checks for GObject Introspection
- #
--have_introspection=false
--PKG_CHECK_MODULES(INTROSPECTION, gobject-introspection-1.0 >= 0.6.4, have_introspection=true, have_introspection=false)
--AM_CONDITIONAL(HAVE_INTROSPECTION, $have_introspection)
--
--G_IR_SCANNER=
--G_IR_COMPILER=
--G_IR_GENERATE=
--GIRDIR=
--TYPELIBDIR=
--if $have_introspection; then
-- G_IR_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-- G_IR_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-- G_IR_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
-- GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
-- TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
--fi
--AC_SUBST(G_IR_SCANNER)
--AC_SUBST(G_IR_COMPILER)
--AC_SUBST(G_IR_GENERATE)
--AC_SUBST(GIRDIR)
--AC_SUBST(TYPELIBDIR)
-+GOBJECT_INTROSPECTION_CHECK(0.6.4)
-
- #
- # Modules to build
---- m4/introspection.m4
-+++ m4/introspection.m4
-@@ -0,0 +1,92 @@
-+dnl -*- mode: autoconf -*-
-+dnl Copyright 2009 Johan Dahlin
-+dnl
-+dnl This file is free software; the author(s) gives unlimited
-+dnl permission to copy and/or distribute it, with or without
-+dnl modifications, as long as this notice is preserved.
-+dnl
-+
-+# serial 1
-+
-+m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
-+[
-+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
-+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
-+ AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
-+
-+ dnl enable/disable introspection
-+ m4_if([$2], [require],
-+ [dnl
-+ enable_introspection=yes
-+ ],[dnl
-+ AC_ARG_ENABLE(introspection,
-+ AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
-+ [Enable introspection for this build]),,
-+ [enable_introspection=auto])
-+ ])dnl
-+
-+ AC_MSG_CHECKING([for gobject-introspection])
-+
-+ dnl presence/version checking
-+ AS_CASE([$enable_introspection],
-+ [no], [dnl
-+ found_introspection="no (disabled, use --enable-introspection to enable)"
-+ ],dnl
-+ [yes],[dnl
-+ PKG_CHECK_EXISTS([gobject-introspection-1.0],,
-+ AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
-+ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
-+ found_introspection=yes,
-+ AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
-+ ],dnl
-+ [auto],[dnl
-+ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
-+ ],dnl
-+ [dnl
-+ AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
-+ ])dnl
-+
-+ AC_MSG_RESULT([$found_introspection])
-+
-+ INTROSPECTION_SCANNER=
-+ INTROSPECTION_COMPILER=
-+ INTROSPECTION_GENERATE=
-+ INTROSPECTION_GIRDIR=
-+ INTROSPECTION_TYPELIBDIR=
-+ if test "x$found_introspection" = "xyes"; then
-+ INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-+ INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-+ INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
-+ INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
-+ INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
-+ INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
-+ INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
-+ fi
-+ AC_SUBST(INTROSPECTION_SCANNER)
-+ AC_SUBST(INTROSPECTION_COMPILER)
-+ AC_SUBST(INTROSPECTION_GENERATE)
-+ AC_SUBST(INTROSPECTION_GIRDIR)
-+ AC_SUBST(INTROSPECTION_TYPELIBDIR)
-+ AC_SUBST(INTROSPECTION_CFLAGS)
-+ AC_SUBST(INTROSPECTION_LIBS)
-+
-+ AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
-+])
-+
-+
-+dnl Usage:
-+dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
-+
-+AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
-+[
-+ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
-+])
-+
-+dnl Usage:
-+dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
-+
-+
-+AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
-+[
-+ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
-+])
---- Makefile.am
-+++ Makefile.am
-@@ -2,6 +2,8 @@
-
- SUBDIRS= pango modules pango-view examples docs tools tests
-
-+ACLOCAL_AMFLAGS = -I m4 -I .
-+
- EXTRA_DIST = \
- autogen.sh \
- pango.pc.in \
---- pango/Makefile.am
-+++ pango/Makefile.am
-@@ -163,8 +163,8 @@
- Pango-1.0.gir: $(libpango_1_0_la_SOURCES)
- Pango-1.0.gir: $(pango_headers)
- Pango-1.0.gir: libpango-1.0.la
--Pango-1.0.gir: $(G_IR_SCANNER) Makefile
-- $(AM_V_GEN) $(G_IR_SCANNER) -v --namespace Pango --nsversion=1.0 \
-+Pango-1.0.gir: $(INTROSPECTION_SCANNER) Makefile
-+ $(AM_V_GEN) $(INTROSPECTION_SCANNER) -v --namespace Pango --nsversion=1.0 \
- --add-include-path=$(srcdir) --add-include-path=. \
- --include=GObject-2.0 \
- --include=cairo-1.0 \
-@@ -278,8 +278,8 @@
- PangoFT2-1.0.gir: $(pangoft2_headers)
- PangoFT2-1.0.gir: $(libpangoft2_1_0_la_SOURCES)
- PangoFT2-1.0.gir: libpangoft2-1.0.la
--PangoFT2-1.0.gir: Pango-1.0.gir $(G_IR_SCANNER) Makefile
-- $(AM_V_GEN) $(G_IR_SCANNER) -v --namespace PangoFT2 --nsversion=1.0 \
-+PangoFT2-1.0.gir: Pango-1.0.gir $(INTROSPECTION_SCANNER) Makefile
-+ $(AM_V_GEN) $(INTROSPECTION_SCANNER) -v --namespace PangoFT2 --nsversion=1.0 \
- --add-include-path=$(srcdir) --add-include-path=. \
- --include=GObject-2.0 \
- --include=Pango-1.0 \
-@@ -335,8 +335,8 @@
- PangoXft-1.0.gir: $(pangoxft_headers)
- PangoXft-1.0.gir: $(libpangoxft_1_0_la_SOURCES)
- PangoXft-1.0.gir: libpangoxft-1.0.la
--PangoXft-1.0.gir: Pango-1.0.gir PangoFT2-1.0.gir $(G_IR_SCANNER) Makefile
-- $(AM_V_GEN) $(G_IR_SCANNER) -v --namespace PangoXft --nsversion=1.0 \
-+PangoXft-1.0.gir: Pango-1.0.gir PangoFT2-1.0.gir $(INTROSPECTION_SCANNER) Makefile
-+ $(AM_V_GEN) $(INTROSPECTION_SCANNER) -v --namespace PangoXft --nsversion=1.0 \
- --add-include-path=$(srcdir) --add-include-path=. \
- --include=GObject-2.0 \
- --include=xft-2.0 \
-@@ -424,8 +424,8 @@
- PangoCairo-1.0.gir: $(libpangocairo_1_0_la_SOURCES)
- PangoCairo-1.0.gir: $(pangocairo_headers)
- PangoCairo-1.0.gir: libpangocairo-1.0.la
--PangoCairo-1.0.gir: Pango-1.0.gir $(PANGOCAIRO_FONT_BACKEND_GI_MODULE).gir $(G_IR_SCANNER) Makefile
-- $(AM_V_GEN) $(G_IR_SCANNER) -v --namespace PangoCairo --nsversion=1.0 \
-+PangoCairo-1.0.gir: Pango-1.0.gir $(PANGOCAIRO_FONT_BACKEND_GI_MODULE).gir $(INTROSPECTION_SCANNER) Makefile
-+ $(AM_V_GEN) $(INTROSPECTION_SCANNER) -v --namespace PangoCairo --nsversion=1.0 \
- --add-include-path=$(srcdir) --add-include-path=. \
- --include=GObject-2.0 \
- --include=cairo-1.0 \
-@@ -551,14 +551,14 @@
-
- if HAVE_INTROSPECTION
-
--girdir = $(GIRDIR)
-+girdir = $(INTROSPECTION_GIRDIR)
- gir_DATA = $(BUILT_GIRSOURCES)
-
--typelibsdir = $(TYPELIBDIR)
-+typelibsdir = $(INTROSPECTION_TYPELIBDIR)
- typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
-
--%.typelib: %.gir $(G_IR_COMPILER)
-- $(AM_V_GEN) LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}. $(G_IR_COMPILER) --includedir=$(srcdir) --includedir=. $(G_IR_COMPILER_OPTS) $< -o $(builddir)/$(@F)
-+%.typelib: %.gir $(INTROSPECTION_COMPILER)
-+ $(AM_V_GEN) LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}. $(INTROSPECTION_COMPILER) --includedir=$(srcdir) --includedir=. $(INTROSPECTION_COMPILER_OPTS) $< -o $(builddir)/$(@F)
-
- endif # HAVE_INTROSPECTION
-
diff --git a/x11-libs/pango/files/pango-1.28.3-heap-corruption.patch b/x11-libs/pango/files/pango-1.28.3-heap-corruption.patch
new file mode 100644
index 000000000000..692f69867eda
--- /dev/null
+++ b/x11-libs/pango/files/pango-1.28.3-heap-corruption.patch
@@ -0,0 +1,50 @@
+From 4e6248d76f55c6184f28afe614d7d76b6fa3d455 Mon Sep 17 00:00:00 2001
+From: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu, 17 Feb 2011 16:19:48 +0000
+Subject: Bug 639882 - Heap corruption in font parsing with FreeType2 backend
+
+---
+diff --git a/pango/pangoft2-render.c b/pango/pangoft2-render.c
+index bd3b7d4..42923f4 100644
+--- a/pango/pangoft2-render.c
++++ b/pango/pangoft2-render.c
+@@ -121,9 +121,14 @@ pango_ft2_font_render_box_glyph (int width,
+
+ box->bitmap.width = width;
+ box->bitmap.rows = height;
+- box->bitmap.pitch = height;
++ box->bitmap.pitch = width;
+
+- box->bitmap.buffer = g_malloc0 (box->bitmap.rows * box->bitmap.pitch);
++ box->bitmap.buffer = g_malloc0_n (box->bitmap.rows, box->bitmap.pitch);
++
++ if (G_UNLIKELY (!box->bitmap.buffer)) {
++ g_slice_free (PangoFT2RenderedGlyph, box);
++ return NULL;
++ }
+
+ /* draw the box */
+ for (j = 0; j < line_width; j++)
+@@ -226,6 +231,11 @@ pango_ft2_font_render_glyph (PangoFont *font,
+ rendered->bitmap_left = face->glyph->bitmap_left;
+ rendered->bitmap_top = face->glyph->bitmap_top;
+
++ if (G_UNLIKELY (!rendered->bitmap.buffer)) {
++ g_slice_free (PangoFT2RenderedGlyph, rendered);
++ return NULL;
++ }
++
+ return rendered;
+ }
+ else
+@@ -276,6 +286,8 @@ pango_ft2_renderer_draw_glyph (PangoRenderer *renderer,
+ if (rendered_glyph == NULL)
+ {
+ rendered_glyph = pango_ft2_font_render_glyph (font, glyph);
++ if (rendered_glyph == NULL)
++ return;
+ add_glyph_to_cache = TRUE;
+ }
+
+--
+cgit v0.8.3.4
diff --git a/x11-libs/pango/files/pango-1.28.3-malloc-failure.patch b/x11-libs/pango/files/pango-1.28.3-malloc-failure.patch
new file mode 100644
index 000000000000..e82f8e6a4c7f
--- /dev/null
+++ b/x11-libs/pango/files/pango-1.28.3-malloc-failure.patch
@@ -0,0 +1,186 @@
+From 3104961bc0ffaf847d2a1e116e6de4fdc1cd8ada Mon Sep 17 00:00:00 2001
+From: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu, 2 Dec 2010 16:00:46 +1300
+Subject: [PATCH] Handle realloc failure in the buffer
+
+Ported from http://cgit.freedesktop.org/harfbuzz/commit/?id=a6a79df5fe2e
+by Karl Tomlinson <karlt+@karlt.net>
+---
+ pango/opentype/hb-buffer-private.h | 1 +
+ pango/opentype/hb-buffer.c | 70 +++++++++++++++++++++---------------
+ pango/opentype/hb-buffer.h | 2 +-
+ 3 files changed, 43 insertions(+), 30 deletions(-)
+
+diff --git a/pango/opentype/hb-buffer-private.h b/pango/opentype/hb-buffer-private.h
+index 45cdc4d..f194786 100644
+--- a/pango/opentype/hb-buffer-private.h
++++ b/pango/opentype/hb-buffer-private.h
+@@ -72,6 +72,7 @@ struct _hb_buffer_t {
+ unsigned int allocated;
+
+ hb_bool_t have_output; /* weather we have an output buffer going on */
++ hb_bool_t in_error; /* Allocation failed */
+ unsigned int in_length;
+ unsigned int out_length;
+ unsigned int in_pos;
+diff --git a/pango/opentype/hb-buffer.c b/pango/opentype/hb-buffer.c
+index 93b51e5..e9788ad 100644
+--- a/pango/opentype/hb-buffer.c
++++ b/pango/opentype/hb-buffer.c
+@@ -52,23 +52,21 @@ static hb_buffer_t _hb_buffer_nil = {
+ * in_string and out_string.
+ */
+
+-/* XXX err handling */
+-
+ /* Internal API */
+
+-static void
++static hb_bool_t
+ hb_buffer_ensure_separate (hb_buffer_t *buffer, unsigned int size)
+ {
+- hb_buffer_ensure (buffer, size);
++ if (HB_UNLIKELY (!hb_buffer_ensure (buffer, size))) return FALSE;
+ if (buffer->out_string == buffer->in_string)
+ {
+ assert (buffer->have_output);
+- if (!buffer->positions)
+- buffer->positions = calloc (buffer->allocated, sizeof (buffer->positions[0]));
+
+ buffer->out_string = (hb_internal_glyph_info_t *) buffer->positions;
+ memcpy (buffer->out_string, buffer->in_string, buffer->out_length * sizeof (buffer->out_string[0]));
+ }
++
++ return TRUE;
+ }
+
+ /* Public API */
+@@ -114,6 +112,7 @@ void
+ hb_buffer_clear (hb_buffer_t *buffer)
+ {
+ buffer->have_output = FALSE;
++ buffer->in_error = FALSE;
+ buffer->in_length = 0;
+ buffer->out_length = 0;
+ buffer->in_pos = 0;
+@@ -122,32 +121,42 @@ hb_buffer_clear (hb_buffer_t *buffer)
+ buffer->max_lig_id = 0;
+ }
+
+-void
++hb_bool_t
+ hb_buffer_ensure (hb_buffer_t *buffer, unsigned int size)
+ {
+- unsigned int new_allocated = buffer->allocated;
+-
+- if (size > new_allocated)
++ if (HB_UNLIKELY (size > buffer->allocated))
+ {
++ unsigned int new_allocated = buffer->allocated;
++ hb_internal_glyph_position_t *new_pos;
++ hb_internal_glyph_info_t *new_info;
++ hb_bool_t separate_out;
++
++ if (HB_UNLIKELY (buffer->in_error))
++ return FALSE;
++
++ separate_out = buffer->out_string != buffer->in_string;
++
+ while (size > new_allocated)
+ new_allocated += (new_allocated >> 1) + 8;
+
+- if (buffer->positions)
+- buffer->positions = realloc (buffer->positions, new_allocated * sizeof (buffer->positions[0]));
++ new_pos = (hb_internal_glyph_position_t *) realloc (buffer->positions, new_allocated * sizeof (buffer->positions[0]));
++ new_info = (hb_internal_glyph_info_t *) realloc (buffer->in_string, new_allocated * sizeof (buffer->in_string[0]));
+
+- if (buffer->out_string != buffer->in_string)
+- {
+- buffer->in_string = realloc (buffer->in_string, new_allocated * sizeof (buffer->in_string[0]));
+- buffer->out_string = (hb_internal_glyph_info_t *) buffer->positions;
+- }
+- else
+- {
+- buffer->in_string = realloc (buffer->in_string, new_allocated * sizeof (buffer->in_string[0]));
+- buffer->out_string = buffer->in_string;
+- }
++ if (HB_UNLIKELY (!new_pos || !new_info))
++ buffer->in_error = TRUE;
++
++ if (HB_LIKELY (new_pos))
++ buffer->positions = new_pos;
+
+- buffer->allocated = new_allocated;
++ if (HB_LIKELY (new_info))
++ buffer->in_string = new_info;
++
++ buffer->out_string = separate_out ? (hb_internal_glyph_info_t *) buffer->positions : buffer->in_string;
++ if (HB_LIKELY (!buffer->in_error))
++ buffer->allocated = new_allocated;
+ }
++
++ return HB_LIKELY (!buffer->in_error);
+ }
+
+ void
+@@ -158,7 +167,7 @@ hb_buffer_add_glyph (hb_buffer_t *buffer,
+ {
+ hb_internal_glyph_info_t *glyph;
+
+- hb_buffer_ensure (buffer, buffer->in_length + 1);
++ if (HB_UNLIKELY (!hb_buffer_ensure (buffer, buffer->in_length + 1))) return;
+
+ glyph = &buffer->in_string[buffer->in_length];
+ glyph->codepoint = codepoint;
+@@ -213,6 +222,8 @@ _hb_buffer_swap (hb_buffer_t *buffer)
+
+ assert (buffer->have_output);
+
++ if (HB_UNLIKELY (buffer->in_error)) return;
++
+ if (buffer->out_string != buffer->in_string)
+ {
+ hb_internal_glyph_info_t *tmp_string;
+@@ -265,7 +276,8 @@ _hb_buffer_add_output_glyphs (hb_buffer_t *buffer,
+ if (buffer->out_string != buffer->in_string ||
+ buffer->out_pos + num_out > buffer->in_pos + num_in)
+ {
+- hb_buffer_ensure_separate (buffer, buffer->out_pos + num_out);
++ if (HB_UNLIKELY (!hb_buffer_ensure_separate (buffer, buffer->out_pos + num_out)))
++ return;
+ }
+
+ mask = buffer->in_string[buffer->in_pos].mask;
+@@ -302,7 +314,7 @@ _hb_buffer_add_output_glyph (hb_buffer_t *buffer,
+
+ if (buffer->out_string != buffer->in_string)
+ {
+- hb_buffer_ensure (buffer, buffer->out_pos + 1);
++ if (HB_UNLIKELY (!hb_buffer_ensure (buffer, buffer->out_pos + 1))) return;
+ buffer->out_string[buffer->out_pos] = buffer->in_string[buffer->in_pos];
+ }
+ else if (buffer->out_pos != buffer->in_pos)
+@@ -332,7 +344,7 @@ _hb_buffer_next_glyph (hb_buffer_t *buffer)
+
+ if (buffer->out_string != buffer->in_string)
+ {
+- hb_buffer_ensure (buffer, buffer->out_pos + 1);
++ if (HB_UNLIKELY (!hb_buffer_ensure (buffer, buffer->out_pos + 1))) return;
+ buffer->out_string[buffer->out_pos] = buffer->in_string[buffer->in_pos];
+ }
+ else if (buffer->out_pos != buffer->in_pos)
+diff --git a/pango/opentype/hb-buffer.h b/pango/opentype/hb-buffer.h
+index b030ba9..aaf6694 100644
+--- a/pango/opentype/hb-buffer.h
++++ b/pango/opentype/hb-buffer.h
+@@ -94,7 +94,7 @@ hb_buffer_clear (hb_buffer_t *buffer);
+ void
+ hb_buffer_clear_positions (hb_buffer_t *buffer);
+
+-void
++hb_bool_t
+ hb_buffer_ensure (hb_buffer_t *buffer,
+ unsigned int size);
+
+--
+1.7.2.2
diff --git a/x11-libs/pango/pango-1.24.5-r1.ebuild b/x11-libs/pango/pango-1.24.5-r1.ebuild
deleted file mode 100644
index 58117a2e7d62..000000000000
--- a/x11-libs/pango/pango-1.24.5-r1.ebuild
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/x11-libs/pango/pango-1.24.5-r1.ebuild,v 1.12 2009/11/28 17:39:38 remi Exp $
-
-EAPI="2"
-GCONF_DEBUG="yes"
-
-inherit eutils gnome2 multilib
-
-DESCRIPTION="Internationalized text layout and rendering library"
-HOMEPAGE="http://www.pango.org/"
-
-LICENSE="LGPL-2 FTL"
-SLOT="0"
-KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd"
-IUSE="X doc test"
-
-# FIXME: add gobject-introspection dependency when it is available
-RDEPEND=">=dev-libs/glib-2.17.3
- >=media-libs/fontconfig-2.5.0
- media-libs/freetype:2
- >=x11-libs/cairo-1.7.6[X?]
- X? (
- x11-libs/libXrender
- x11-libs/libX11
- x11-libs/libXft )"
-DEPEND="${RDEPEND}
- >=dev-util/pkgconfig-0.9
- doc? ( >=dev-util/gtk-doc-1
- ~app-text/docbook-xml-dtd-4.1.2
- x11-libs/libXft )
- test? ( >=dev-util/gtk-doc-1
- ~app-text/docbook-xml-dtd-4.1.2
- x11-libs/libXft )
- X? ( x11-proto/xproto )"
-
-DOCS="AUTHORS ChangeLog* NEWS README THANKS"
-
-function multilib_enabled() {
- has_multilib_profile || ( use x86 && [ "$(get_libdir)" = "lib32" ] )
-}
-
-pkg_setup() {
- G2CONF="${G2CONF} $(use_with X x)"
-}
-
-src_prepare() {
- gnome2_src_prepare
-
- # make config file location host specific so that a 32bit and 64bit pango
- # wont fight with each other on a multilib system. Fix building for
- # emul-linux-x86-gtklibs
- if multilib_enabled ; then
- epatch "${FILESDIR}/${PN}-1.2.5-lib64.patch"
- fi
-}
-
-pkg_postinst() {
- if [ "${ROOT}" = "/" ] ; then
- einfo "Generating modules listing..."
-
- local PANGO_CONFDIR=
-
- if multilib_enabled ; then
- PANGO_CONFDIR="/etc/pango/${CHOST}"
- else
- PANGO_CONFDIR="/etc/pango"
- fi
-
- mkdir -p ${PANGO_CONFDIR}
-
- pango-querymodules > ${PANGO_CONFDIR}/pango.modules
- fi
-}
diff --git a/x11-libs/pango/pango-1.26.2.ebuild b/x11-libs/pango/pango-1.28.3-r1.ebuild
index 5542681cce19..52f573024c89 100644
--- a/x11-libs/pango/pango-1.26.2.ebuild
+++ b/x11-libs/pango/pango-1.28.3-r1.ebuild
@@ -1,8 +1,8 @@
-# Copyright 1999-2010 Gentoo Foundation
+# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/x11-libs/pango/pango-1.26.2.ebuild,v 1.8 2010/08/18 20:51:09 maekke Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/pango/pango-1.28.3-r1.ebuild,v 1.1 2011/03/12 18:32:04 pacho Exp $
-EAPI="2"
+EAPI="3"
GCONF_DEBUG="yes"
inherit autotools eutils gnome2 multilib toolchain-funcs
@@ -12,11 +12,11 @@ HOMEPAGE="http://www.pango.org/"
LICENSE="LGPL-2 FTL"
SLOT="0"
-KEYWORDS="alpha amd64 arm hppa ia64 ~mips ~ppc ppc64 s390 sh sparc x86 ~x86-fbsd"
-IUSE="X doc test"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd"
+IUSE="X doc +introspection test"
-RDEPEND=">=dev-libs/glib-2.17.3
- >=media-libs/fontconfig-2.5.0
+RDEPEND=">=dev-libs/glib-2.17.3:2
+ >=media-libs/fontconfig-2.5.0:1.0
media-libs/freetype:2
>=x11-libs/cairo-1.7.6[X?]
X? (
@@ -25,29 +25,28 @@ RDEPEND=">=dev-libs/glib-2.17.3
x11-libs/libXft )"
DEPEND="${RDEPEND}
>=dev-util/pkgconfig-0.9
- dev-util/gtk-doc-am
+ >=dev-util/gtk-doc-am-1.13
doc? (
- >=dev-util/gtk-doc-1
+ >=dev-util/gtk-doc-1.13
~app-text/docbook-xml-dtd-4.1.2
x11-libs/libXft )
+ introspection? ( >=dev-libs/gobject-introspection-0.9.5 )
test? (
- >=dev-util/gtk-doc-1
+ >=dev-util/gtk-doc-1.13
~app-text/docbook-xml-dtd-4.1.2
x11-libs/libXft )
X? ( x11-proto/xproto )"
-DOCS="AUTHORS ChangeLog* NEWS README THANKS"
-
function multilib_enabled() {
has_multilib_profile || ( use x86 && [ "$(get_libdir)" = "lib32" ] )
}
pkg_setup() {
tc-export CXX
- # XXX: DO NOT add introspection support, collides with gir-repository[pango]
G2CONF="${G2CONF}
- --disable-introspection
+ $(use_enable introspection)
$(use_with X x)"
+ DOCS="AUTHORS ChangeLog* NEWS README THANKS"
}
src_prepare() {
@@ -60,17 +59,20 @@ src_prepare() {
epatch "${FILESDIR}/${PN}-1.26.0-lib64.patch"
fi
- # gtk-doc checks do not pass, upstream bug #578944
- sed -e 's:TESTS = check.docs: TESTS = :g' \
- -i docs/Makefile.am || die "sed failed"
+ # Fix heap corruption in font parsing with FreeType2 backend, upstream bug #639882
+ epatch "${FILESDIR}/${PN}-1.28.3-heap-corruption.patch"
- # Fix introspection automagic.
- # https://bugzilla.gnome.org/show_bug.cgi?id=596506
- epatch "${FILESDIR}/${PN}-1.26.0-introspection-automagic.patch"
+ # Handle malloc failure in the buffer, upstream #644577
+ epatch "${FILESDIR}/${PN}-1.28.3-malloc-failure.patch"
eautoreconf
}
+src_install() {
+ gnome2_src_install
+ find "${ED}/usr/$(get_libdir)/pango/1.6.0/modules" -name "*.la" -delete || die
+}
+
pkg_postinst() {
if [ "${ROOT}" = "/" ] ; then
einfo "Generating modules listing..."