From c89b1f9fccaf4c77132d50d6a6abf8a77511bcf1dc54ce839532165024c64864 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Fri, 3 Feb 2012 09:22:22 +0000 Subject: [PATCH] Accepting request 102529 from GNOME:Apps Update to 2.6.12 (forwarded request 102347 from vuntz) OBS-URL: https://build.opensuse.org/request/show/102529 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gimp?expand=0&rev=74 --- gimp-2.6.11.tar.bz2 | 3 - gimp-2.6.12.tar.bz2 | 3 + gimp-CVE-2010-4540-and-more.patch | 129 -------- gimp-CVE-2010-4543.patch | 23 -- gimp-CVE-2011-2896.patch | 109 ------- gimp-fix-linking.patch | 39 --- gimp-poppler-0.18.patch | 476 ----------------------------- gimp-pyslice-cellspacing-fix.patch | 24 -- gimp.changes | 17 ++ gimp.spec | 45 +-- 10 files changed, 28 insertions(+), 840 deletions(-) delete mode 100644 gimp-2.6.11.tar.bz2 create mode 100644 gimp-2.6.12.tar.bz2 delete mode 100644 gimp-CVE-2010-4540-and-more.patch delete mode 100644 gimp-CVE-2010-4543.patch delete mode 100644 gimp-CVE-2011-2896.patch delete mode 100644 gimp-fix-linking.patch delete mode 100644 gimp-poppler-0.18.patch delete mode 100644 gimp-pyslice-cellspacing-fix.patch diff --git a/gimp-2.6.11.tar.bz2 b/gimp-2.6.11.tar.bz2 deleted file mode 100644 index 00a5b03..0000000 --- a/gimp-2.6.11.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9b6d08d0803b3912ea596d1b77b9c21ee13778c23388a225c004b8c1587cb0a1 -size 16473561 diff --git a/gimp-2.6.12.tar.bz2 b/gimp-2.6.12.tar.bz2 new file mode 100644 index 0000000..81db895 --- /dev/null +++ b/gimp-2.6.12.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d553c9f1c07f59fa7b7ce9cc5f84ce59bf4e9dfb5b6ee4bd8718b74b947aec62 +size 16745411 diff --git a/gimp-CVE-2010-4540-and-more.patch b/gimp-CVE-2010-4540-and-more.patch deleted file mode 100644 index 3fd7fb3..0000000 --- a/gimp-CVE-2010-4540-and-more.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 7fb0300e1cfdb98a3bde54dbc73a0f3eda375162 Mon Sep 17 00:00:00 2001 -From: Simon Budig -Date: Tue, 11 Jan 2011 22:28:16 +0000 -Subject: fixes for some buffer overflow problems (see bug #639203) - ---- -diff --git a/plug-ins/common/sphere-designer.c b/plug-ins/common/sphere-designer.c -index 4e5b982..6dea871 100644 ---- a/plug-ins/common/sphere-designer.c -+++ b/plug-ins/common/sphere-designer.c -@@ -1993,6 +1993,7 @@ loadit (const gchar * fn) - gchar endbuf[21 * (G_ASCII_DTOSTR_BUF_SIZE + 1)]; - gchar *end = endbuf; - gchar line[1024]; -+ gchar fmt_str[16]; - gint i; - texture *t; - gint majtype, type; -@@ -2017,6 +2018,8 @@ loadit (const gchar * fn) - - s.com.numtexture = 0; - -+ snprintf (fmt_str, sizeof (fmt_str), "%%d %%d %%%lds", sizeof (endbuf) - 1); -+ - while (!feof (f)) - { - -@@ -2027,7 +2030,7 @@ loadit (const gchar * fn) - t = &s.com.texture[i]; - setdefaults (t); - -- if (sscanf (line, "%d %d %s", &t->majtype, &t->type, end) != 3) -+ if (sscanf (line, fmt_str, &t->majtype, &t->type, end) != 3) - t->color1.x = g_ascii_strtod (end, &end); - if (end && errno != ERANGE) - t->color1.y = g_ascii_strtod (end, &end); -diff --git a/plug-ins/gfig/gfig-style.c b/plug-ins/gfig/gfig-style.c -index ee1c7b2..eae78f8 100644 ---- a/plug-ins/gfig/gfig-style.c -+++ b/plug-ins/gfig/gfig-style.c -@@ -164,6 +164,7 @@ gfig_read_parameter_gimp_rgb (gchar **text, - gchar *ptr; - gchar *tmpstr; - gchar *endptr; -+ gchar fmt_str[32]; - gchar colorstr_r[G_ASCII_DTOSTR_BUF_SIZE]; - gchar colorstr_g[G_ASCII_DTOSTR_BUF_SIZE]; - gchar colorstr_b[G_ASCII_DTOSTR_BUF_SIZE]; -@@ -171,6 +172,10 @@ gfig_read_parameter_gimp_rgb (gchar **text, - - style_entry->r = style_entry->g = style_entry->b = style_entry->a = 0.; - -+ snprintf (fmt_str, sizeof (fmt_str), "%%%lds %%%lds %%%lds %%%lds", -+ sizeof (colorstr_r) - 1, sizeof (colorstr_g) - 1, -+ sizeof (colorstr_b) - 1, sizeof (colorstr_a) - 1); -+ - while (n < nitems) - { - ptr = strchr (text[n], ':'); -@@ -180,7 +185,8 @@ gfig_read_parameter_gimp_rgb (gchar **text, - ptr++; - if (!strcmp (tmpstr, name)) - { -- sscanf (ptr, "%s %s %s %s", colorstr_r, colorstr_g, colorstr_b, colorstr_a); -+ sscanf (ptr, fmt_str, -+ colorstr_r, colorstr_g, colorstr_b, colorstr_a); - style_entry->r = g_ascii_strtod (colorstr_r, &endptr); - style_entry->g = g_ascii_strtod (colorstr_g, &endptr); - style_entry->b = g_ascii_strtod (colorstr_b, &endptr); -diff --git a/plug-ins/lighting/lighting-ui.c b/plug-ins/lighting/lighting-ui.c -index 99fb348..126f6e2 100644 ---- a/plug-ins/lighting/lighting-ui.c -+++ b/plug-ins/lighting/lighting-ui.c -@@ -1345,6 +1345,7 @@ load_preset_response (GtkFileChooser *chooser, - gchar buffer3[G_ASCII_DTOSTR_BUF_SIZE]; - gchar type_label[21]; - gchar *endptr; -+ gchar fmt_str[32]; - - if (response_id == GTK_RESPONSE_OK) - { -@@ -1384,23 +1385,41 @@ load_preset_response (GtkFileChooser *chooser, - return; - } - -- fscanf (fp, " Position: %s %s %s", buffer1, buffer2, buffer3); -+ snprintf (fmt_str, sizeof (fmt_str), -+ " Position: %%%lds %%%lds %%%lds", -+ sizeof (buffer1) - 1, -+ sizeof (buffer2) - 1, -+ sizeof (buffer3) - 1); -+ fscanf (fp, fmt_str, buffer1, buffer2, buffer3); - source->position.x = g_ascii_strtod (buffer1, &endptr); - source->position.y = g_ascii_strtod (buffer2, &endptr); - source->position.z = g_ascii_strtod (buffer3, &endptr); - -- fscanf (fp, " Direction: %s %s %s", buffer1, buffer2, buffer3); -+ snprintf (fmt_str, sizeof (fmt_str), -+ " Direction: %%%lds %%%lds %%%lds", -+ sizeof (buffer1) - 1, -+ sizeof (buffer2) - 1, -+ sizeof (buffer3) - 1); -+ fscanf (fp, fmt_str, buffer1, buffer2, buffer3); - source->direction.x = g_ascii_strtod (buffer1, &endptr); - source->direction.y = g_ascii_strtod (buffer2, &endptr); - source->direction.z = g_ascii_strtod (buffer3, &endptr); - -- fscanf (fp, " Color: %s %s %s", buffer1, buffer2, buffer3); -+ snprintf (fmt_str, sizeof (fmt_str), -+ " Color: %%%lds %%%lds %%%lds", -+ sizeof (buffer1) - 1, -+ sizeof (buffer2) - 1, -+ sizeof (buffer3) - 1); -+ fscanf (fp, fmt_str, buffer1, buffer2, buffer3); - source->color.r = g_ascii_strtod (buffer1, &endptr); - source->color.g = g_ascii_strtod (buffer2, &endptr); - source->color.b = g_ascii_strtod (buffer3, &endptr); - source->color.a = 1.0; - -- fscanf (fp, " Intensity: %s", buffer1); -+ snprintf (fmt_str, sizeof (fmt_str), -+ " Intensity: %%%lds", -+ sizeof (buffer1) - 1); -+ fscanf (fp, fmt_str, buffer1); - source->intensity = g_ascii_strtod (buffer1, &endptr); - - } --- -cgit v0.8.3.1 diff --git a/gimp-CVE-2010-4543.patch b/gimp-CVE-2010-4543.patch deleted file mode 100644 index 2f031a0..0000000 --- a/gimp-CVE-2010-4543.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 48ec15890e1751dede061f6d1f469b6508c13439 Mon Sep 17 00:00:00 2001 -From: Simon Budig -Date: Mon, 14 Feb 2011 20:46:31 +0000 -Subject: file-psp: fix for bogus input data. Fixes bug #639203 - ---- -diff --git a/plug-ins/common/file-psp.c b/plug-ins/common/file-psp.c -index ef39d5b..04897d5 100644 ---- a/plug-ins/common/file-psp.c -+++ b/plug-ins/common/file-psp.c -@@ -1197,6 +1197,10 @@ read_channel_data (FILE *f, - } - else - fread (buf, runcount, 1, f); -+ -+ /* prevent buffer overflow for bogus data */ -+ runcount = MIN (runcount, endq - q); -+ - if (bytespp == 1) - { - memmove (q, buf, runcount); --- -cgit v0.8.3.1 diff --git a/gimp-CVE-2011-2896.patch b/gimp-CVE-2011-2896.patch deleted file mode 100644 index f64c7d3..0000000 --- a/gimp-CVE-2011-2896.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 0eae221c7c6eb84591d718587a17ea90c8852d5b Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Thu, 04 Aug 2011 10:47:44 +0000 -Subject: file-gif-load: ensure return value of LZWReadByte() is <= 255 - -(cherry picked from commit b1a3de761362db982c0ddfaff60ab4a3c4267f32) ---- -diff --git a/plug-ins/common/file-gif-load.c b/plug-ins/common/file-gif-load.c -index 9a0720b..a4d98fc 100644 ---- a/plug-ins/common/file-gif-load.c -+++ b/plug-ins/common/file-gif-load.c -@@ -743,11 +743,11 @@ LZWReadByte (FILE *fd, - } - while (firstcode == clear_code); - -- return firstcode; -+ return firstcode & 255; - } - - if (sp > stack) -- return *--sp; -+ return (*--sp) & 255; - - while ((code = GetCode (fd, code_size, FALSE)) >= 0) - { -@@ -770,7 +770,7 @@ LZWReadByte (FILE *fd, - sp = stack; - firstcode = oldcode = GetCode (fd, code_size, FALSE); - -- return firstcode; -+ return firstcode & 255; - } - else if (code == end_code) - { -@@ -826,10 +826,10 @@ LZWReadByte (FILE *fd, - oldcode = incode; - - if (sp > stack) -- return *--sp; -+ return (*--sp) & 255; - } - -- return code; -+ return code & 255; - } - - static gint32 --- -cgit v0.9.0.2 -From 62718f821b7c79a6860b8b25f0a21a91daa6e22d Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Thu, 04 Aug 2011 10:51:42 +0000 -Subject: file-gif-load: fix heap corruption and buffer overflow (CVE-2011-2896) - -(cherry picked from commit 376ad788c1a1c31d40f18494889c383f6909ebfc) ---- -diff --git a/plug-ins/common/file-gif-load.c b/plug-ins/common/file-gif-load.c -index a4d98fc..8460ec0 100644 ---- a/plug-ins/common/file-gif-load.c -+++ b/plug-ins/common/file-gif-load.c -@@ -697,7 +697,8 @@ LZWReadByte (FILE *fd, - static gint firstcode, oldcode; - static gint clear_code, end_code; - static gint table[2][(1 << MAX_LZW_BITS)]; -- static gint stack[(1 << (MAX_LZW_BITS)) * 2], *sp; -+#define STACK_SIZE ((1 << (MAX_LZW_BITS)) * 2) -+ static gint stack[STACK_SIZE], *sp; - gint i; - - if (just_reset_LZW) -@@ -772,7 +773,7 @@ LZWReadByte (FILE *fd, - - return firstcode & 255; - } -- else if (code == end_code) -+ else if (code == end_code || code > max_code) - { - gint count; - guchar buf[260]; -@@ -791,13 +792,14 @@ LZWReadByte (FILE *fd, - - incode = code; - -- if (code >= max_code) -+ if (code == max_code) - { -- *sp++ = firstcode; -+ if (sp < &(stack[STACK_SIZE])) -+ *sp++ = firstcode; - code = oldcode; - } - -- while (code >= clear_code) -+ while (code >= clear_code && sp < &(stack[STACK_SIZE])) - { - *sp++ = table[1][code]; - if (code == table[0][code]) -@@ -808,7 +810,8 @@ LZWReadByte (FILE *fd, - code = table[0][code]; - } - -- *sp++ = firstcode = table[1][code]; -+ if (sp < &(stack[STACK_SIZE])) -+ *sp++ = firstcode = table[1][code]; - - if ((code = max_code) < (1 << MAX_LZW_BITS)) - { --- -cgit v0.9.0.2 diff --git a/gimp-fix-linking.patch b/gimp-fix-linking.patch deleted file mode 100644 index df06671..0000000 --- a/gimp-fix-linking.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 582cb0f14eb9f145bd2a2f5c9fda12309ae0229f Mon Sep 17 00:00:00 2001 -From: Manish Singh -Date: Sun, 24 May 2009 17:42:39 +0000 -Subject: Explicitly specify library dependencies at link time, so we can use gold. - ---- -(limited to 'libgimpthumb/Makefile.am') - -diff --git a/libgimpthumb/Makefile.am b/libgimpthumb/Makefile.am -index a78a83a..98acd24 100644 ---- a/libgimpthumb/Makefile.am -+++ b/libgimpthumb/Makefile.am -@@ -86,7 +86,10 @@ noinst_PROGRAMS = gimp-thumbnail-list - - gimp_thumbnail_list_SOURCES = gimp-thumbnail-list.c - --gimp_thumbnail_list_LDADD = libgimpthumb-$(GIMP_API_VERSION).la -+gimp_thumbnail_list_LDADD = \ -+ libgimpthumb-$(GIMP_API_VERSION).la \ -+ $(GDK_PIXBUF_LIBS) \ -+ $(GLIB_LIBS) - - - install-data-local: install-ms-lib install-libtool-import-lib --- -cgit v0.9.0.2 -Index: gimp-2.6.11/plug-ins/script-fu/Makefile.am -=================================================================== ---- gimp-2.6.11.orig/plug-ins/script-fu/Makefile.am -+++ gimp-2.6.11/plug-ins/script-fu/Makefile.am -@@ -8,7 +8,7 @@ libgimpbase = $(top_builddir)/libgimpbas - libgimpconfig = $(top_builddir)/libgimpconfig/libgimpconfig-$(GIMP_API_VERSION).la - libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la - --libtinyscheme=tinyscheme/libtinyscheme.a -+libtinyscheme=tinyscheme/libtinyscheme.a -lm - libftx=ftx/libftx.a - - if OS_WIN32 diff --git a/gimp-poppler-0.18.patch b/gimp-poppler-0.18.patch deleted file mode 100644 index 46909a7..0000000 --- a/gimp-poppler-0.18.patch +++ /dev/null @@ -1,476 +0,0 @@ -From 69f69eed816b89be9a01a48a1f0643d1fd496118 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Fri, 6 May 2011 11:58:44 +0200 -Subject: [PATCH] patch: poppler-0.17 - -Squashed commit of the following: - -commit 529d940222dfc352d41fbf72de29134421aa4002 -Author: Nils Philippsen -Date: Fri May 6 11:50:30 2011 +0200 - - use code based on pixbufs instead of cairo surfaces - - this is done to avoid adding to libgimp, thanks to Mukund Sivaraman for - hints how to do this - -commit f8671d8767d4cdab830dc06310e96c63a88ec0fd -Author: Mukund Sivaraman -Date: Thu Apr 21 13:57:13 2011 +0530 - - file-pdf-load: Update attribution, removing bogus copyright - (cherry picked from commit e999122e0b20b6ccd6bde3ce039bb64068fc0019) - -commit 89a78f2590d298dac2f42e6d9a3016fc5d672c70 -Author: Nils Philippsen -Date: Thu Apr 21 13:52:18 2011 +0200 - - file-pdf-load: Use better API + cleanups - - * fixes issues with poppler 0.17 completely - * uses new libgimp API to pass surfaces instead of pixbufs - * uses GTK+ 3 API to convert surfaces to pixbufs where available - (backported from commit 7bdadd80ba479d6ff904e276d805e16f6b940ee2) - -commit 4e92302c4a14a961f112587a0ad86696c88da2f8 -Author: Nils Philippsen -Date: Thu Apr 21 13:38:08 2011 +0200 - - file-pdf-load: Don't use deprecated API (bug #646947) - - (cherry picked from commit 9b3e1c91fd2eac69da6947ec9c7fbf10096ba237) - - Conflicts: - - plug-ins/common/file-pdf.c ---- - plug-ins/common/file-pdf.c | 323 ++++++++++++++++++++++++++++++++++++++------ - 1 files changed, 283 insertions(+), 40 deletions(-) - -diff --git a/plug-ins/common/file-pdf.c b/plug-ins/common/file-pdf.c -index a43b459..43c2b7d 100644 ---- a/plug-ins/common/file-pdf.c -+++ b/plug-ins/common/file-pdf.c -@@ -4,6 +4,9 @@ - * - * Copyright (C) 2005 Nathan Summers - * -+ * Some code in render_page_to_surface() borrowed from -+ * poppler.git/glib/poppler-page.cc. -+ * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or -@@ -80,16 +83,20 @@ static gboolean load_dialog (PopplerDocument *doc, - static PopplerDocument * open_document (const gchar *filename, - GError **error); - --static GdkPixbuf * get_thumbnail (PopplerDocument *doc, -+static cairo_surface_t * get_thumb_surface (PopplerDocument *doc, -+ gint page, -+ gint preferred_size); -+ -+static GdkPixbuf * get_thumb_pixbuf (PopplerDocument *doc, - gint page, - gint preferred_size); - - static gint32 layer_from_pixbuf (gint32 image, -- const gchar *layer_name, -- gint position, -- GdkPixbuf *buf, -- gdouble progress_start, -- gdouble progress_scale); -+ const gchar *layer_name, -+ gint position, -+ GdkPixbuf *pixbuf, -+ gdouble progress_start, -+ gdouble progress_scale); - - /** - ** the following was formerly part of -@@ -433,11 +440,12 @@ run (const gchar *name, - } - else - { -- gdouble width = 0; -- gdouble height = 0; -- gdouble scale; -- gint32 image = -1; -- GdkPixbuf *pixbuf = NULL; -+ gdouble width = 0; -+ gdouble height = 0; -+ gdouble scale; -+ gint32 image = -1; -+ gint num_pages = 0; -+ GdkPixbuf *pixbuf = NULL; - - /* Possibly retrieve last settings */ - gimp_get_data (LOAD_PROC, &loadvals); -@@ -455,7 +463,10 @@ run (const gchar *name, - g_object_unref (page); - } - -- pixbuf = get_thumbnail (doc, 0, param[1].data.d_int32); -+ num_pages = poppler_document_get_n_pages (doc); -+ -+ pixbuf = get_thumb_pixbuf (doc, 0, param[1].data.d_int32); -+ - g_object_unref (doc); - } - -@@ -548,6 +559,187 @@ open_document (const gchar *filename, - return doc; - } - -+/* FIXME: Remove this someday when we depend fully on GTK+ >= 3 */ -+ -+#if (!GTK_CHECK_VERSION (3, 0, 0)) -+ -+static cairo_format_t -+gdk_cairo_format_for_content (cairo_content_t content) -+{ -+ switch (content) -+ { -+ case CAIRO_CONTENT_COLOR: -+ return CAIRO_FORMAT_RGB24; -+ case CAIRO_CONTENT_ALPHA: -+ return CAIRO_FORMAT_A8; -+ case CAIRO_CONTENT_COLOR_ALPHA: -+ default: -+ return CAIRO_FORMAT_ARGB32; -+ } -+} -+ -+static cairo_surface_t * -+gdk_cairo_surface_coerce_to_image (cairo_surface_t *surface, -+ cairo_content_t content, -+ int src_x, -+ int src_y, -+ int width, -+ int height) -+{ -+ cairo_surface_t *copy; -+ cairo_t *cr; -+ -+ copy = cairo_image_surface_create (gdk_cairo_format_for_content (content), -+ width, -+ height); -+ -+ cr = cairo_create (copy); -+ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); -+ cairo_set_source_surface (cr, surface, -src_x, -src_y); -+ cairo_paint (cr); -+ cairo_destroy (cr); -+ -+ return copy; -+} -+ -+static void -+convert_alpha (guchar *dest_data, -+ int dest_stride, -+ guchar *src_data, -+ int src_stride, -+ int src_x, -+ int src_y, -+ int width, -+ int height) -+{ -+ int x, y; -+ -+ src_data += src_stride * src_y + src_x * 4; -+ -+ for (y = 0; y < height; y++) { -+ guint32 *src = (guint32 *) src_data; -+ -+ for (x = 0; x < width; x++) { -+ guint alpha = src[x] >> 24; -+ -+ if (alpha == 0) -+ { -+ dest_data[x * 4 + 0] = 0; -+ dest_data[x * 4 + 1] = 0; -+ dest_data[x * 4 + 2] = 0; -+ } -+ else -+ { -+ dest_data[x * 4 + 0] = (((src[x] & 0xff0000) >> 16) * 255 + alpha / 2) / alpha; -+ dest_data[x * 4 + 1] = (((src[x] & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha; -+ dest_data[x * 4 + 2] = (((src[x] & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha; -+ } -+ dest_data[x * 4 + 3] = alpha; -+ } -+ -+ src_data += src_stride; -+ dest_data += dest_stride; -+ } -+} -+ -+static void -+convert_no_alpha (guchar *dest_data, -+ int dest_stride, -+ guchar *src_data, -+ int src_stride, -+ int src_x, -+ int src_y, -+ int width, -+ int height) -+{ -+ int x, y; -+ -+ src_data += src_stride * src_y + src_x * 4; -+ -+ for (y = 0; y < height; y++) { -+ guint32 *src = (guint32 *) src_data; -+ -+ for (x = 0; x < width; x++) { -+ dest_data[x * 3 + 0] = src[x] >> 16; -+ dest_data[x * 3 + 1] = src[x] >> 8; -+ dest_data[x * 3 + 2] = src[x]; -+ } -+ -+ src_data += src_stride; -+ dest_data += dest_stride; -+ } -+} -+ -+/** -+ * gdk_pixbuf_get_from_surface: -+ * @surface: surface to copy from -+ * @src_x: Source X coordinate within @surface -+ * @src_y: Source Y coordinate within @surface -+ * @width: Width in pixels of region to get -+ * @height: Height in pixels of region to get -+ * -+ * Transfers image data from a #cairo_surface_t and converts it to an RGB(A) -+ * representation inside a #GdkPixbuf. This allows you to efficiently read -+ * individual pixels from cairo surfaces. For #GdkWindows, use -+ * gdk_pixbuf_get_from_window() instead. -+ * -+ * This function will create an RGB pixbuf with 8 bits per channel. -+ * The pixbuf will contain an alpha channel if the @surface contains one. -+ * -+ * Return value: (transfer full): A newly-created pixbuf with a reference -+ * count of 1, or %NULL on error -+ */ -+static GdkPixbuf * -+gdk_pixbuf_get_from_surface (cairo_surface_t *surface, -+ gint src_x, -+ gint src_y, -+ gint width, -+ gint height) -+{ -+ cairo_content_t content; -+ GdkPixbuf *dest; -+ -+ /* General sanity checks */ -+ g_return_val_if_fail (surface != NULL, NULL); -+ g_return_val_if_fail (width > 0 && height > 0, NULL); -+ -+ content = cairo_surface_get_content (surface) | CAIRO_CONTENT_COLOR; -+ dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB, -+ !!(content & CAIRO_CONTENT_ALPHA), -+ 8, -+ width, height); -+ -+ surface = gdk_cairo_surface_coerce_to_image (surface, content, -+ src_x, src_y, -+ width, height); -+ cairo_surface_flush (surface); -+ if (cairo_surface_status (surface) || dest == NULL) -+ { -+ cairo_surface_destroy (surface); -+ return NULL; -+ } -+ -+ if (gdk_pixbuf_get_has_alpha (dest)) -+ convert_alpha (gdk_pixbuf_get_pixels (dest), -+ gdk_pixbuf_get_rowstride (dest), -+ cairo_image_surface_get_data (surface), -+ cairo_image_surface_get_stride (surface), -+ 0, 0, -+ width, height); -+ else -+ convert_no_alpha (gdk_pixbuf_get_pixels (dest), -+ gdk_pixbuf_get_rowstride (dest), -+ cairo_image_surface_get_data (surface), -+ cairo_image_surface_get_stride (surface), -+ 0, 0, -+ width, height); -+ -+ cairo_surface_destroy (surface); -+ return dest; -+} -+ -+#endif -+ - static gint32 - layer_from_pixbuf (gint32 image, - const gchar *layer_name, -@@ -566,6 +758,54 @@ layer_from_pixbuf (gint32 image, - return layer; - } - -+static cairo_surface_t * -+render_page_to_surface (PopplerPage *page, -+ int width, -+ int height, -+ double scale) -+{ -+ cairo_surface_t *surface; -+ cairo_t *cr; -+ -+ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); -+ cr = cairo_create (surface); -+ -+ cairo_save (cr); -+ cairo_translate (cr, 0.0, 0.0); -+ -+ if (scale != 1.0) -+ cairo_scale (cr, scale, scale); -+ -+ poppler_page_render (page, cr); -+ cairo_restore (cr); -+ -+ cairo_set_operator (cr, CAIRO_OPERATOR_DEST_OVER); -+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); -+ cairo_paint (cr); -+ -+ cairo_destroy (cr); -+ -+ return surface; -+} -+ -+static GdkPixbuf * -+render_page_to_pixbuf (PopplerPage *page, -+ int width, -+ int height, -+ double scale) -+{ -+ GdkPixbuf *pixbuf; -+ cairo_surface_t *surface; -+ -+ surface = render_page_to_surface (page, width, height, scale); -+ pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, -+ cairo_image_surface_get_width (surface), -+ cairo_image_surface_get_height (surface)); -+ cairo_surface_destroy (surface); -+ -+ return pixbuf; -+} -+ - static gint32 - load_image (PopplerDocument *doc, - const gchar *filename, -@@ -597,7 +837,7 @@ load_image (PopplerDocument *doc, - gdouble page_width; - gdouble page_height; - -- GdkPixbuf *buf; -+ GdkPixbuf *pixbuf; - gint width; - gint height; - -@@ -627,15 +867,13 @@ load_image (PopplerDocument *doc, - gimp_image_set_resolution (image_ID, resolution, resolution); - } - -- buf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height); -- -- poppler_page_render_to_pixbuf (page, 0, 0, width, height, scale, 0, buf); -+ pixbuf = render_page_to_pixbuf (page, width, height, scale); - -- layer_from_pixbuf (image_ID, page_label, i, buf, -+ layer_from_pixbuf (image_ID, page_label, i, pixbuf, - doc_progress, 1.0 / pages->n_pages); - - g_free (page_label); -- g_object_unref (buf); -+ g_object_unref(pixbuf); - - doc_progress = (double) (i + 1) / pages->n_pages; - gimp_progress_update (doc_progress); -@@ -676,30 +914,22 @@ load_image (PopplerDocument *doc, - return image_ID; - } - --static GdkPixbuf * --get_thumbnail (PopplerDocument *doc, -- gint page_num, -- gint preferred_size) -+static cairo_surface_t * -+get_thumb_surface (PopplerDocument *doc, -+ gint page_num, -+ gint preferred_size) - { - PopplerPage *page; -- GdkPixbuf *pixbuf; -+ cairo_surface_t *surface; - - page = poppler_document_get_page (doc, page_num); - - if (! page) - return NULL; - -- /* XXX: Remove conditional when we depend on poppler 0.8.0, but also -- * add configure check to make sure POPPLER_WITH_GDK is enabled! -- */ --#ifdef POPPLER_WITH_GDK -- pixbuf = poppler_page_get_thumbnail_pixbuf (page); --#else -- pixbuf = poppler_page_get_thumbnail (page); --#endif -- -+ surface = poppler_page_get_thumbnail (page); - -- if (! pixbuf) -+ if (! surface) - { - gdouble width; - gdouble height; -@@ -712,15 +942,28 @@ get_thumbnail (PopplerDocument *doc, - width *= scale; - height *= scale; - -- pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, -- width, height); -- -- poppler_page_render_to_pixbuf (page, -- 0, 0, width, height, scale, 0, pixbuf); -+ surface = render_page_to_surface (page, width, height, scale); - } - - g_object_unref (page); - -+ return surface; -+} -+ -+static GdkPixbuf * -+get_thumb_pixbuf (PopplerDocument *doc, -+ gint page_num, -+ gint preferred_size) -+{ -+ cairo_surface_t *surface; -+ GdkPixbuf *pixbuf; -+ -+ surface = get_thumb_surface (doc, page_num, preferred_size); -+ pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, -+ cairo_image_surface_get_width (surface), -+ cairo_image_surface_get_height (surface)); -+ cairo_surface_destroy (surface); -+ - return pixbuf; - } - -@@ -769,8 +1012,8 @@ thumbnail_thread (gpointer data) - idle_data->page_no = i; - - /* FIXME get preferred size from somewhere? */ -- idle_data->pixbuf = get_thumbnail (thread_data->document, i, -- THUMBNAIL_SIZE); -+ idle_data->pixbuf = get_thumb_pixbuf (thread_data->document, i, -+ THUMBNAIL_SIZE); - - g_idle_add (idle_set_thumbnail, idle_data); - --- -1.7.5 diff --git a/gimp-pyslice-cellspacing-fix.patch b/gimp-pyslice-cellspacing-fix.patch deleted file mode 100644 index 6b0bb0c..0000000 --- a/gimp-pyslice-cellspacing-fix.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 16d77f975b2c398a515f91e34ef868dc3bb49228 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Wed, 02 Feb 2011 16:11:28 +0000 -Subject: Bug 641259 - [abrt] gimp-2:2.6.11-1.fc14: py-slice.py:172:slice:TypeError: integer argument expected, got float - -py-slice: cast cellspacing to int in pyslice() to avoid tracebacks -(cherry picked from commit 0af966b63fcc55b36380d6538dfb30000f71fef9) ---- -diff --git a/plug-ins/pygimp/plug-ins/py-slice.py b/plug-ins/pygimp/plug-ins/py-slice.py -index 40743f3..ac35f23 100755 ---- a/plug-ins/pygimp/plug-ins/py-slice.py -+++ b/plug-ins/pygimp/plug-ins/py-slice.py -@@ -36,6 +36,9 @@ gettext.install("gimp20-python", gimp.locale_directory, unicode=True) - def pyslice(image, drawable, save_path, html_filename, - image_basename, image_extension, separate, - image_path, cellspacing, animate, skip_caps): -+ -+ cellspacing = int (cellspacing) -+ - if animate: - count = 0 - drw = [] --- -cgit v0.9.0.2 diff --git a/gimp.changes b/gimp.changes index ddc65da..44de20f 100644 --- a/gimp.changes +++ b/gimp.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Wed Feb 1 09:09:46 UTC 2012 - vuntz@opensuse.org + +- Update to version 2.6.12: + + Bugs fixed: bgo#623045, bgo#627328, bgo#631728, bgo#631885, + bgo#639203, bgo#640219, bgo#640612, bgo#641259, bgo#646947, + bgo#652280, bgo#660305. + + Updated translations. +- Drop gimp-CVE-2010-4540-and-more.patch: fixed upstream. +- Drop gimp-CVE-2010-4543.patch: fixed upstream. +- Drop gimp-fix-linking.patch: fixed upstream. +- Drop gimp-CVE-2011-2896.patch: fixed upstream. +- Drop gimp-pyslice-cellspacing-fix.patch: fixed upstream. +- Drop gimp-poppler-0.18.patch: fixed upstream. +- Remove call to autoreconf and libtool BuildRequires: they were + only needed for gimp-fix-linking.patch. + ------------------------------------------------------------------- Fri Oct 21 11:19:42 UTC 2011 - vuntz@opensuse.org diff --git a/gimp.spec b/gimp.spec index 4a0b7e9..759a1a2 100644 --- a/gimp.spec +++ b/gimp.spec @@ -1,7 +1,7 @@ # # spec file for package gimp # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -15,7 +15,6 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # - %define build_hal 0%{?suse_version} <= 1140 %global abiver 4 @@ -44,7 +43,6 @@ BuildRequires: libpoppler-glib-devel BuildRequires: librsvg-devel BuildRequires: libtiff-devel BuildRequires: libwebkit-devel -BuildRequires: libtool BuildRequires: libwmf-devel BuildRequires: pango-devel BuildRequires: python-gtk-devel @@ -52,28 +50,16 @@ BuildRequires: translation-update-upstream BuildRequires: update-desktop-files BuildRequires: xorg-x11-libXfixes-devel Url: http://www.gimp.org/ -Version: 2.6.11 -Release: 23 +Version: 2.6.12 +Release: 0 +Summary: The GNU Image Manipulation Program License: GPL-2.0+ Group: Productivity/Graphics/Bitmap Editors -Summary: The GNU Image Manipulation Program -Source: ftp://ftp.gimp.org/pub/gimp/v2.6/%{name}-%{version}.tar.bz2 +Source: ftp://ftp.gimp.org/pub/gimp/stable/%{name}-%{version}.tar.bz2 Source1: macros.gimp # openSUSE palette file Source2: openSUSE.gpl Source99: baselibs.conf -# PATCH-FIX-UPSTREAM gimp-CVE-2010-4540-and-more.patch CVE-2010-4540 CVE-2010-4541 CVE-2010-4542 bgo#639203 bnc#662043 vuntz@opensuse.org -- Fix various buffer overflows -Patch0: gimp-CVE-2010-4540-and-more.patch -# PATCH-FIX-UPSTREAM gimp-CVE-2010-4543.patch CVE-2010-4543 bgo#639203 bnc#662043 vuntz@opensuse.org -- Fix a buffer overflow when reading a psp file -Patch1: gimp-CVE-2010-4543.patch -# PATCH-FIX-UPSTREAM gimp-fix-linking.patch bgo#659586 vuntz@opensuse.org -- Fix linking issue because of missing libs -Patch2: gimp-fix-linking.patch -# PATCH-FIX-UPSTREAM gimp-CVE-2011-2896.patch CVE-2011-2896 bnc#711491 vuntz@opensuse.org -- Fix heap corruption and buffer overflow -Patch3: gimp-CVE-2011-2896.patch -# PATCH-FIX-UPSTREAM gimp-pyslice-cellspacing-fix.patch vuntz@opensuse.org -- Fix pyslice to not crash -Patch4: gimp-pyslice-cellspacing-fix.patch -# PATCH-FIX-UPSTREAM gimp-poppler-0.18.patch vuntz@opensuse.org -- Fix build with poppler 0.18, taken from fedora -Patch5: gimp-poppler-0.18.patch Requires: %{name}-branding = %{version} Recommends: %{name}-lang Recommends: %{name}-help-browser @@ -104,7 +90,6 @@ distribute. %package -n libgimp-2_0-0 -License: GPL-2.0+ Summary: The GNU Image Manipulation Program - Libraries Group: Productivity/Graphics/Bitmap Editors @@ -124,7 +109,6 @@ This package provides GIMP libraries. %package -n libgimpui-2_0-0 -License: GPL-2.0+ Summary: The GNU Image Manipulation Program - UI Libraries Group: Productivity/Graphics/Bitmap Editors @@ -144,7 +128,6 @@ This package provides GIMP UI libraries. %package branding-upstream -License: GPL-2.0+ Summary: The GNU Image Manipulation Program -- Upstream Splash Screen Group: Productivity/Graphics/Bitmap Editors Requires: %{name} = %{version} @@ -177,13 +160,12 @@ This package contains the upstream splash screen for the GIMP. %package plugins-python -License: GPL-2.0+ Summary: The GNU Image Manipulation Program - python-gtk based plugins +Group: Productivity/Graphics/Bitmap Editors Requires: %{name} = %{version} python-gtk Supplements: %{name} Provides: gimp-2.0-plugins-python = %{version} Obsoletes: gimp-unstable-plugins-python < 2.6.0 -Group: Productivity/Graphics/Bitmap Editors # For update from <= 10.3 and SLED 10: Provides: %{name}:%{_libdir}/gimp/2.0/plug-ins/pyconsole.py = %{version} %py_requires @@ -202,13 +184,12 @@ distribute. %package devel -License: GPL-2.0+ Summary: The GNU Image Manipulation Program +Group: Productivity/Graphics/Bitmap Editors Requires: libgimp-2_0-0 = %{version} Requires: libgimpui-2_0-0 = %{version} Provides: gimp-2.0-devel = %{version} Obsoletes: gimp-unstable-devel < 2.6.0 -Group: Productivity/Graphics/Bitmap Editors Obsoletes: gimp-doc <= 2.6.4 Provides: gimp-doc = 2.6.4 @@ -226,7 +207,6 @@ distribute. %package help-browser -License: GPL-2.0+ Summary: The GNU Image Manipulation Program - Help Browser Group: Productivity/Graphics/Bitmap Editors Requires: %{name} = %{version} @@ -239,11 +219,10 @@ This package contains the help browser for the GIMP. %if %{build_hal} %package module-hal -License: GPL-2.0+ Summary: The GNU Image Manipulation Program - module to detect input devices with HAL +Group: Productivity/Graphics/Bitmap Editors Requires: %{name} = %{version} Supplements: packageand(%{name}:hal) -Group: Productivity/Graphics/Bitmap Editors %description module-hal The GIMP (GNU Image Manipulation Program) is a powerful image @@ -270,12 +249,6 @@ translation-update-upstream po-python gimp20-python translation-update-upstream po-script-fu gimp20-script-fu translation-update-upstream po-plug-ins gimp20-std-plug-ins translation-update-upstream po-tips gimp20-tips -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 # Safety check for ABI version change. vabi=`printf "%d" $(sed -n '/#define GIMP_MODULE_ABI_VERSION/{s/.* //;p}' libgimpmodule/gimpmodule.h)` if test "x${vabi}" != "x%{abiver}"; then @@ -292,8 +265,6 @@ if test "x${vapi}" != "x%{apiver}"; then fi %build -# needed for patch2 -autoreconf -fi export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" %configure --with-pic\ --disable-static\