From 4f2d7949f03e1c198bc888f2d05f421d35c57e21 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 9 Oct 2017 18:53:29 +0100 Subject: reinit the tree, so we can have metadata --- .../gimp/files/gimp-2.7.4-no-deprecation.patch | 36 +++ media-gfx/gimp/files/gimp-2.8.10-clang.patch | 204 +++++++++++++++ .../gimp/files/gimp-2.8.14-blend-center.patch | 30 +++ media-gfx/gimp/files/gimp-2.8.6-uclibc.patch | 45 ++++ .../gimp/files/gimp-2.9.2-CVE-2016-4994.patch | 88 +++++++ media-gfx/gimp/files/gimp-2.9.2-gegl-0.3.8.patch | 54 ++++ .../gimp/files/gimp-2.9.2-no-deprecation.patch | 50 ++++ media-gfx/gimp/files/gimp-2.9.2-version.patch | 28 ++ .../gimp/files/gimp-2.9.4-CVE-2007-3126.patch | 291 +++++++++++++++++++++ media-gfx/gimp/files/gimp-2.9.4-gegl-bin.patch | 28 ++ .../gimp/files/gimp-2.9.4-mkdir-makefile.patch | 36 +++ media-gfx/gimp/files/gimp-2.9.6-underlinking.patch | 20 ++ 12 files changed, 910 insertions(+) create mode 100644 media-gfx/gimp/files/gimp-2.7.4-no-deprecation.patch create mode 100644 media-gfx/gimp/files/gimp-2.8.10-clang.patch create mode 100644 media-gfx/gimp/files/gimp-2.8.14-blend-center.patch create mode 100644 media-gfx/gimp/files/gimp-2.8.6-uclibc.patch create mode 100644 media-gfx/gimp/files/gimp-2.9.2-CVE-2016-4994.patch create mode 100644 media-gfx/gimp/files/gimp-2.9.2-gegl-0.3.8.patch create mode 100644 media-gfx/gimp/files/gimp-2.9.2-no-deprecation.patch create mode 100644 media-gfx/gimp/files/gimp-2.9.2-version.patch create mode 100644 media-gfx/gimp/files/gimp-2.9.4-CVE-2007-3126.patch create mode 100644 media-gfx/gimp/files/gimp-2.9.4-gegl-bin.patch create mode 100644 media-gfx/gimp/files/gimp-2.9.4-mkdir-makefile.patch create mode 100644 media-gfx/gimp/files/gimp-2.9.6-underlinking.patch (limited to 'media-gfx/gimp/files') diff --git a/media-gfx/gimp/files/gimp-2.7.4-no-deprecation.patch b/media-gfx/gimp/files/gimp-2.7.4-no-deprecation.patch new file mode 100644 index 000000000000..66bd93d0d1aa --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.7.4-no-deprecation.patch @@ -0,0 +1,36 @@ +--- configure.ac 2012-01-02 13:15:53.695067626 +0100 ++++ configure.ac 2012-01-02 13:21:49.161623684 +0100 +@@ -1943,33 +1943,6 @@ + AC_SUBST(MIME_TYPES) + + +-######################### +-# Disable deprecated APIs +-######################### +- +-CPPFLAGS="${CPPFLAGS} -DGIMP_DISABLE_DEPRECATED -DBABL_DISABLE_DEPRECATED -DGSEAL_ENABLE" +- +-# Make sure not to disable deprecated APIs for unreleased versions. +-# We must build without problems with future releases of libraries +-# and disabling deprecated API risks breaking the build +- +-if test "x$have_glib_2_31" != "xyes"; then +- CPPFLAGS="${CPPFLAGS} -DG_DISABLE_DEPRECATED" +-fi +- +-if test "x$have_gtk_2_26" != "xyes"; then +- CPPFLAGS="${CPPFLAGS} -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED" +-fi +- +-if test "x$have_gdk_pixbuf_2_26" != "xyes"; then +- CPPFLAGS="${CPPFLAGS} -DGDK_PIXBUF_DISABLE_DEPRECATED" +-fi +- +-if test "x$have_pango_1_32" != "xyes"; then +- CPPFLAGS="${CPPFLAGS} -DPANGO_DISABLE_DEPRECATED" +-fi +- +- + ############################ + # Require multihead safe API + ############################ diff --git a/media-gfx/gimp/files/gimp-2.8.10-clang.patch b/media-gfx/gimp/files/gimp-2.8.10-clang.patch new file mode 100644 index 000000000000..065c66b36139 --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.8.10-clang.patch @@ -0,0 +1,204 @@ +--- app/Makefile.am ++++ app/Makefile.am +@@ -120,29 +120,29 @@ + + # FIXME: core should not depend on xcf + workaround_that_core_depends_on_xcf = \ +- -u $(SYMPREFIX)xcf_init ++ -Wl,-u,$(SYMPREFIX)xcf_init + + # FIXME: core should not depend on pdb + workaround_that_core_depends_on_pdb = \ +- -u $(SYMPREFIX)internal_procs_init \ +- -u $(SYMPREFIX)gimp_plug_in_manager_restore ++ -Wl,-u,$(SYMPREFIX)internal_procs_init \ ++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore + + # FIXME: plug-in should not depend on pdb + workaround_that_plug_in_depends_on_pdb = \ +- -u $(SYMPREFIX)gimp_pdb_compat_param_spec ++ -Wl,-u,$(SYMPREFIX)gimp_pdb_compat_param_spec + + # FIXME: file should not depend on plug-in + workaround_that_file_depends_on_plug_in = \ +- -u $(SYMPREFIX)plug_in_icc_profile_apply_rgb \ +- -u $(SYMPREFIX)gimp_image_map_config_get_type ++ -Wl,-u,$(SYMPREFIX)plug_in_icc_profile_apply_rgb \ ++ -Wl,-u,$(SYMPREFIX)gimp_image_map_config_get_type + + # core, vectors and gegl are on the same architectural layer, prevent + # the linker from panicing + calm_down_linker = \ +- -u $(SYMPREFIX)gimp_vectors_undo_get_type \ +- -u $(SYMPREFIX)gimp_vectors_mod_undo_get_type \ +- -u $(SYMPREFIX)gimp_vectors_prop_undo_get_type \ +- -u $(SYMPREFIX)gimp_curve_map_pixels ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_mod_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_prop_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_curve_map_pixels + + AM_LDFLAGS = \ + $(munix) \ +--- app/Makefile.in ++++ app/Makefile.in +@@ -702,33 +702,33 @@ + + # FIXME: core should not depend on xcf + workaround_that_core_depends_on_xcf = \ +- -u $(SYMPREFIX)xcf_init ++ -Wl,-u,$(SYMPREFIX)xcf_init + + + # FIXME: core should not depend on pdb + workaround_that_core_depends_on_pdb = \ +- -u $(SYMPREFIX)internal_procs_init \ +- -u $(SYMPREFIX)gimp_plug_in_manager_restore ++ -Wl,-u,$(SYMPREFIX)internal_procs_init \ ++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore + + + # FIXME: plug-in should not depend on pdb + workaround_that_plug_in_depends_on_pdb = \ +- -u $(SYMPREFIX)gimp_pdb_compat_param_spec ++ -Wl,-u,$(SYMPREFIX)gimp_pdb_compat_param_spec + + + # FIXME: file should not depend on plug-in + workaround_that_file_depends_on_plug_in = \ +- -u $(SYMPREFIX)plug_in_icc_profile_apply_rgb \ +- -u $(SYMPREFIX)gimp_image_map_config_get_type ++ -Wl,-u,$(SYMPREFIX)plug_in_icc_profile_apply_rgb \ ++ -Wl,-u,$(SYMPREFIX)gimp_image_map_config_get_type + + + # core, vectors and gegl are on the same architectural layer, prevent + # the linker from panicing + calm_down_linker = \ +- -u $(SYMPREFIX)gimp_vectors_undo_get_type \ +- -u $(SYMPREFIX)gimp_vectors_mod_undo_get_type \ +- -u $(SYMPREFIX)gimp_vectors_prop_undo_get_type \ +- -u $(SYMPREFIX)gimp_curve_map_pixels ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_mod_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_prop_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_curve_map_pixels + + AM_LDFLAGS = \ + $(munix) \ +--- app/tests/Makefile.am ++++ app/tests/Makefile.am +@@ -63,22 +63,22 @@ + # We need this due to circular dependencies, see more detailed + # comments about it in app/Makefile.am + AM_LDFLAGS = \ +- -u $(SYMPREFIX)xcf_init \ +- -u $(SYMPREFIX)base_init \ +- -u $(SYMPREFIX)internal_procs_init \ +- -u $(SYMPREFIX)gimp_plug_in_manager_restore \ +- -u $(SYMPREFIX)gimp_pdb_compat_param_spec \ +- -u $(SYMPREFIX)gui_init \ +- -u $(SYMPREFIX)plug_in_icc_profile_apply_rgb \ +- -u $(SYMPREFIX)gimp_image_map_config_get_type \ +- -u $(SYMPREFIX)gimp_vectors_undo_get_type \ +- -u $(SYMPREFIX)gimp_vectors_mod_undo_get_type \ +- -u $(SYMPREFIX)gimp_vectors_prop_undo_get_type \ +- -u $(SYMPREFIX)actions_init \ +- -u $(SYMPREFIX)gimp_error_dialog_new \ +- -u $(SYMPREFIX)menus_save \ +- -u $(SYMPREFIX)gimp_tools_save \ +- -u $(SYMPREFIX)gimp_curve_map_pixels ++ -Wl,-u,$(SYMPREFIX)xcf_init \ ++ -Wl,-u,$(SYMPREFIX)base_init \ ++ -Wl,-u,$(SYMPREFIX)internal_procs_init \ ++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore \ ++ -Wl,-u,$(SYMPREFIX)gimp_pdb_compat_param_spec \ ++ -Wl,-u,$(SYMPREFIX)gui_init \ ++ -Wl,-u,$(SYMPREFIX)plug_in_icc_profile_apply_rgb \ ++ -Wl,-u,$(SYMPREFIX)gimp_image_map_config_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_mod_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_prop_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)actions_init \ ++ -Wl,-u,$(SYMPREFIX)gimp_error_dialog_new \ ++ -Wl,-u,$(SYMPREFIX)menus_save \ ++ -Wl,-u,$(SYMPREFIX)gimp_tools_save \ ++ -Wl,-u,$(SYMPREFIX)gimp_curve_map_pixels + + # Note that we have some duplicate entries here too to work around + # circular dependencies and systems on the same architectural layer as +--- app/tests/Makefile.in ++++ app/tests/Makefile.in +@@ -1221,22 +1221,22 @@ + # We need this due to circular dependencies, see more detailed + # comments about it in app/Makefile.am + AM_LDFLAGS = \ +- -u $(SYMPREFIX)xcf_init \ +- -u $(SYMPREFIX)base_init \ +- -u $(SYMPREFIX)internal_procs_init \ +- -u $(SYMPREFIX)gimp_plug_in_manager_restore \ +- -u $(SYMPREFIX)gimp_pdb_compat_param_spec \ +- -u $(SYMPREFIX)gui_init \ +- -u $(SYMPREFIX)plug_in_icc_profile_apply_rgb \ +- -u $(SYMPREFIX)gimp_image_map_config_get_type \ +- -u $(SYMPREFIX)gimp_vectors_undo_get_type \ +- -u $(SYMPREFIX)gimp_vectors_mod_undo_get_type \ +- -u $(SYMPREFIX)gimp_vectors_prop_undo_get_type \ +- -u $(SYMPREFIX)actions_init \ +- -u $(SYMPREFIX)gimp_error_dialog_new \ +- -u $(SYMPREFIX)menus_save \ +- -u $(SYMPREFIX)gimp_tools_save \ +- -u $(SYMPREFIX)gimp_curve_map_pixels ++ -Wl,-u,$(SYMPREFIX)xcf_init \ ++ -Wl,-u,$(SYMPREFIX)base_init \ ++ -Wl,-u,$(SYMPREFIX)internal_procs_init \ ++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore \ ++ -Wl,-u,$(SYMPREFIX)gimp_pdb_compat_param_spec \ ++ -Wl,-u,$(SYMPREFIX)gui_init \ ++ -Wl,-u,$(SYMPREFIX)plug_in_icc_profile_apply_rgb \ ++ -Wl,-u,$(SYMPREFIX)gimp_image_map_config_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_mod_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)gimp_vectors_prop_undo_get_type \ ++ -Wl,-u,$(SYMPREFIX)actions_init \ ++ -Wl,-u,$(SYMPREFIX)gimp_error_dialog_new \ ++ -Wl,-u,$(SYMPREFIX)menus_save \ ++ -Wl,-u,$(SYMPREFIX)gimp_tools_save \ ++ -Wl,-u,$(SYMPREFIX)gimp_curve_map_pixels + + + # Note that we have some duplicate entries here too to work around +--- devel-docs/app/Makefile.am ++++ devel-docs/app/Makefile.am +@@ -62,10 +62,10 @@ + -UGTK_DISABLE_SINGLE_INCLUDES + + GTKDOC_LIBS = \ +- -u $(SYMPREFIX)xcf_init \ +- -u $(SYMPREFIX)internal_procs_init \ +- -u $(SYMPREFIX)gimp_coords_mix \ +- -u $(SYMPREFIX)gimp_plug_in_manager_restore \ ++ -Wl,-u,$(SYMPREFIX)xcf_init \ ++ -Wl,-u,$(SYMPREFIX)internal_procs_init \ ++ -Wl,-u,$(SYMPREFIX)gimp_coords_mix \ ++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore \ + $(top_builddir)/app/app.o \ + $(top_builddir)/app/batch.o \ + $(top_builddir)/app/errors.o \ +--- devel-docs/app/Makefile.in ++++ devel-docs/app/Makefile.in +@@ -511,10 +511,10 @@ + -UGTK_DISABLE_SINGLE_INCLUDES + + GTKDOC_LIBS = \ +- -u $(SYMPREFIX)xcf_init \ +- -u $(SYMPREFIX)internal_procs_init \ +- -u $(SYMPREFIX)gimp_coords_mix \ +- -u $(SYMPREFIX)gimp_plug_in_manager_restore \ ++ -Wl,-u,$(SYMPREFIX)xcf_init \ ++ -Wl,-u,$(SYMPREFIX)internal_procs_init \ ++ -Wl,-u,$(SYMPREFIX)gimp_coords_mix \ ++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore \ + $(top_builddir)/app/app.o \ + $(top_builddir)/app/batch.o \ + $(top_builddir)/app/errors.o \ diff --git a/media-gfx/gimp/files/gimp-2.8.14-blend-center.patch b/media-gfx/gimp/files/gimp-2.8.14-blend-center.patch new file mode 100644 index 000000000000..eba04df59aa2 --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.8.14-blend-center.patch @@ -0,0 +1,30 @@ +From 97e55692ebad5897be334c81c133b6626b9b6920 Mon Sep 17 00:00:00 2001 +From: Michael Natterer +Date: Wed, 26 Aug 2015 23:23:16 +0200 +Subject: app: the blend tool was rendering all gradients off-by-0.5 + +When calculating the color of a pixel, we want to calculate the color +at its center, not at its top-left corner. Found by Raymond Jennings. + +EDIT (by Sebastian Pipping ): + Cut away patch chunk for app/operations/gimpoperationblend.c + since 2.8.14 doesn't seem to have that file. + +diff --git a/app/core/gimpdrawable-blend.c b/app/core/gimpdrawable-blend.c +index af565d1..e4f92a1 100644 +--- a/app/core/gimpdrawable-blend.c ++++ b/app/core/gimpdrawable-blend.c +@@ -628,6 +628,10 @@ gradient_render_pixel (gdouble x, + RenderBlendData *rbd = render_data; + gdouble factor; + ++ /* we want to calculate the color at the pixel's center */ ++ x += 0.5; ++ y += 0.5; ++ + /* Calculate blending factor */ + + switch (rbd->gradient_type) +-- +cgit v0.10.2 + diff --git a/media-gfx/gimp/files/gimp-2.8.6-uclibc.patch b/media-gfx/gimp/files/gimp-2.8.6-uclibc.patch new file mode 100644 index 000000000000..855e9872f4b4 --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.8.6-uclibc.patch @@ -0,0 +1,45 @@ +From 4fb7a436bca3e11abfda8bc23818af0f09714b9d Mon Sep 17 00:00:00 2001 +From: Michael Natterer +Date: Fri, 02 Aug 2013 14:50:00 +0000 +Subject: Bug 704980 - uclibc - base-utils.c: execinfo.h: No such file or directory + +Apply patch from Amadeusz Slawinski that checks for execinfo.h and +builds the code that needs it conditionally. +--- +diff --git a/app/base/base-utils.c b/app/base/base-utils.c +index 757f58d..44a9e89 100644 +--- a/app/base/base-utils.c ++++ b/app/base/base-utils.c +@@ -29,7 +29,7 @@ + #include + #endif + +-#ifdef G_OS_UNIX ++#if defined(G_OS_UNIX) && defined(HAVE_EXECINFO_H) + /* For get_backtrace() */ + #include + #include +@@ -112,7 +112,7 @@ get_physical_memory_size (void) + char * + get_backtrace (void) + { +-#ifdef G_OS_UNIX ++#if defined(G_OS_UNIX) && defined(HAVE_EXECINFO_H) + void *functions[MAX_FUNC]; + char **function_names; + int n_functions; +diff --git a/configure.ac b/configure.ac +index 0bbcbc7..15c7cc6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -416,7 +416,7 @@ AC_HEADER_STDC + AC_HEADER_SYS_WAIT + AC_HEADER_TIME + +-AC_CHECK_HEADERS(sys/param.h sys/time.h sys/times.h sys/wait.h unistd.h) ++AC_CHECK_HEADERS(execinfo.h sys/param.h sys/time.h sys/times.h sys/wait.h unistd.h) + + AC_TYPE_PID_T + AC_FUNC_VPRINTF +-- +cgit v0.9.2 diff --git a/media-gfx/gimp/files/gimp-2.9.2-CVE-2016-4994.patch b/media-gfx/gimp/files/gimp-2.9.2-CVE-2016-4994.patch new file mode 100644 index 000000000000..846318b42149 --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.9.2-CVE-2016-4994.patch @@ -0,0 +1,88 @@ +From 6d804bf9ae77bc86a0a97f9b944a129844df9395 Mon Sep 17 00:00:00 2001 +From: Shmuel H +Date: Mon, 20 Jun 2016 17:14:41 +0300 +Subject: Bug 767873 - (CVE-2016-4994) Multiple Use-After-Free when parsing... + +...XCF channel and layer properties + +The properties PROP_ACTIVE_LAYER, PROP_FLOATING_SELECTION, +PROP_ACTIVE_CHANNEL saves the current object pointer the @info +structure. Others like PROP_SELECTION (for channel) and +PROP_GROUP_ITEM (for layer) will delete the current object and create +a new object, leaving the pointers in @info invalid (dangling). + +Therefore, if a property from the first type will come before the +second, the result will be an UaF in the last lines of xcf_load_image +(when it actually using the pointers from @info). + +I wasn't able to exploit this bug because that +g_object_instance->c_class gets cleared by the last g_object_unref and +GIMP_IS_{LAYER,CHANNEL} detects that and return FALSE. +--- + app/xcf/xcf-load.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +diff --git a/app/xcf/xcf-load.c b/app/xcf/xcf-load.c +index f48558a..244d5c2 100644 +--- a/app/xcf/xcf-load.c ++++ b/app/xcf/xcf-load.c +@@ -1141,6 +1141,18 @@ xcf_load_layer_props (XcfInfo *info, + case PROP_GROUP_ITEM: + { + GimpLayer *group; ++ gboolean is_active_layer; ++ ++ /* We're going to delete *layer, Don't leave its pointers ++ * in @info. After that, we'll restore them back with the ++ * new pointer. See bug #767873. ++ */ ++ is_active_layer = (*layer == info->active_layer); ++ if (is_active_layer) ++ info->active_layer = NULL; ++ ++ if (*layer == info->floating_sel) ++ info->floating_sel = NULL; + + group = gimp_group_layer_new (image); + +@@ -1150,6 +1162,13 @@ xcf_load_layer_props (XcfInfo *info, + g_object_ref_sink (*layer); + g_object_unref (*layer); + *layer = group; ++ ++ if (is_active_layer) ++ info->active_layer = *layer; ++ ++ /* Don't restore info->floating_sel because group layers ++ * can't be floating selections ++ */ + } + break; + +@@ -1220,6 +1239,12 @@ xcf_load_channel_props (XcfInfo *info, + { + GimpChannel *mask; + ++ /* We're going to delete *channel, Don't leave its pointer ++ * in @info. See bug #767873. ++ */ ++ if (*channel == info->active_channel) ++ info->active_channel = NULL; ++ + mask = + gimp_selection_new (image, + gimp_item_get_width (GIMP_ITEM (*channel)), +@@ -1234,6 +1259,10 @@ xcf_load_channel_props (XcfInfo *info, + *channel = mask; + (*channel)->boundary_known = FALSE; + (*channel)->bounds_known = FALSE; ++ ++ /* Don't restore info->active_channel because the ++ * selection can't be the active channel ++ */ + } + break; + +-- +cgit v0.12 + diff --git a/media-gfx/gimp/files/gimp-2.9.2-gegl-0.3.8.patch b/media-gfx/gimp/files/gimp-2.9.2-gegl-0.3.8.patch new file mode 100644 index 000000000000..a3aa236542bf --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.9.2-gegl-0.3.8.patch @@ -0,0 +1,54 @@ +https://bugs.gentoo.org/586828 + +Backported from: +https://git.gnome.org/browse/gimp/commit/?id=2e4685013123c584354bc38612527593a815c38b + +--- gimp-2.9.2/app/core/gimpparamspecs-duplicate.c ++++ gimp-2.9.2/app/core/gimpparamspecs-duplicate.c +@@ -66,23 +66,11 @@ + } + else + { +- + copy = g_param_spec_string (pspec->name, + g_param_spec_get_nick (pspec), + g_param_spec_get_blurb (pspec), + spec->default_value, + flags); +- +- if (GEGL_IS_PARAM_SPEC_MULTILINE (pspec)) +- { +- static GQuark multiline_quark = 0; +- +- if (! multiline_quark) +- multiline_quark = g_quark_from_static_string ("multiline"); +- +- g_param_spec_set_qdata (copy, multiline_quark, +- GINT_TO_POINTER (TRUE)); +- } + } + } + else if (G_IS_PARAM_SPEC_BOOLEAN (pspec)) +--- gimp-2.9.2/app/widgets/gimppropgui.c ++++ gimp-2.9.2/app/widgets/gimppropgui.c +@@ -227,11 +227,6 @@ + } + else if (G_IS_PARAM_SPEC_STRING (pspec)) + { +- static GQuark multiline_quark = 0; +- +- if (! multiline_quark) +- multiline_quark = g_quark_from_static_string ("multiline"); +- + if (GIMP_IS_PARAM_SPEC_CONFIG_PATH (pspec)) + { + widget = +@@ -239,7 +234,7 @@ + g_param_spec_get_nick (pspec), + GTK_FILE_CHOOSER_ACTION_OPEN); + } +- else if (g_param_spec_get_qdata (pspec, multiline_quark)) ++ else if (HAS_KEY (pspec, "multiline", "true")) + { + GtkTextBuffer *buffer; + GtkWidget *view; diff --git a/media-gfx/gimp/files/gimp-2.9.2-no-deprecation.patch b/media-gfx/gimp/files/gimp-2.9.2-no-deprecation.patch new file mode 100644 index 000000000000..441298a08fde --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.9.2-no-deprecation.patch @@ -0,0 +1,50 @@ +From 81d7607e5159275a9b693a170f7767ffcb548a1b Mon Sep 17 00:00:00 2001 +From: Sebastian Pipping +Date: Sat, 5 Dec 2015 01:14:37 +0100 +Subject: [PATCH] Do not disable deprecated APIs + +--- + configure.ac | 27 --------------------------- + 1 file changed, 27 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 4de6e53..8528e87 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2111,33 +2111,6 @@ MIME_TYPES="$MIME_TYPES;" + AC_SUBST(MIME_TYPES) + + +-######################### +-# Disable deprecated APIs +-######################### +- +-CPPFLAGS="${CPPFLAGS} -DGIMP_DISABLE_DEPRECATED -DBABL_DISABLE_DEPRECATED -DGSEAL_ENABLE" +- +-# Make sure not to disable deprecated APIs for unreleased versions. +-# We must build without problems with future releases of libraries +-# and disabling deprecated API risks breaking the build +- +-if test "x$have_glib_2_43" != "xyes"; then +- CPPFLAGS="${CPPFLAGS} -DG_DISABLE_DEPRECATED" +-fi +- +-if test "x$have_gtk_2_26" != "xyes"; then +- CPPFLAGS="${CPPFLAGS} -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED" +-fi +- +-if test "x$have_gdk_pixbuf_2_31" != "xyes"; then +- CPPFLAGS="${CPPFLAGS} -DGDK_PIXBUF_DISABLE_DEPRECATED" +-fi +- +-if test "x$have_pango_1_32" != "xyes"; then +- CPPFLAGS="${CPPFLAGS} -DPANGO_DISABLE_DEPRECATED" +-fi +- +- + ############################ + # Require multihead safe API + ############################ +-- +2.6.3 + diff --git a/media-gfx/gimp/files/gimp-2.9.2-version.patch b/media-gfx/gimp/files/gimp-2.9.2-version.patch new file mode 100644 index 000000000000..e48614455577 --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.9.2-version.patch @@ -0,0 +1,28 @@ +From f2f7a29ba5aceaa38a285f15c3fe8b481d05b357 Mon Sep 17 00:00:00 2001 +From: Sebastian Pipping +Date: Sat, 5 Dec 2015 01:15:22 +0100 +Subject: [PATCH] Sync version string + +.. with +m4_define([gimp_micro_version], [2]) +above +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 8528e87..21d86a3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -20,7 +20,7 @@ m4_define([gimp_binary_age], + [m4_eval(100 * gimp_minor_version + gimp_micro_version)]) + + # For overriding the version string. Comment out if not needed. +-# m4_define([gimp_version], [2.9.1]) ++# m4_define([gimp_version], [2.9.2]) + + # This is the X.Y used in -lgimp-X.Y + m4_define([gimp_api_version], [2.0]) +-- +2.6.3 + diff --git a/media-gfx/gimp/files/gimp-2.9.4-CVE-2007-3126.patch b/media-gfx/gimp/files/gimp-2.9.4-CVE-2007-3126.patch new file mode 100644 index 000000000000..6c515173d9cd --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.9.4-CVE-2007-3126.patch @@ -0,0 +1,291 @@ +From 46bcd82800e37b0f5aead76184430ef2fe802748 Mon Sep 17 00:00:00 2001 +From: Michael Natterer +Date: Sun, 6 Nov 2016 21:34:43 +0100 +Subject: Bug 773233 - CVE-2007-3126 - Gimp 2.3.14 allows context-dependent + attackers... + +...to cause a denial of service (crash) via an ICO file with an +InfoHeader containing a Height of zero + +Add some error handling to ico-load.c and bail out on zero width or height +icons. Also some formatting cleanup. +--- + plug-ins/file-ico/ico-load.c | 103 ++++++++++++++++++++++++++----------------- + 1 file changed, 62 insertions(+), 41 deletions(-) + +diff --git a/plug-ins/file-ico/ico-load.c b/plug-ins/file-ico/ico-load.c +index c8091d3..8cce94f 100644 +--- a/plug-ins/file-ico/ico-load.c ++++ b/plug-ins/file-ico/ico-load.c +@@ -124,15 +124,17 @@ static guint32 + ico_read_init (FILE *fp) + { + IcoFileHeader header; ++ + /* read and check file header */ +- if (!ico_read_int16 (fp, &header.reserved, 1) +- || !ico_read_int16 (fp, &header.resource_type, 1) +- || !ico_read_int16 (fp, &header.icon_count, 1) +- || header.reserved != 0 +- || header.resource_type != 1) ++ if (! ico_read_int16 (fp, &header.reserved, 1) || ++ ! ico_read_int16 (fp, &header.resource_type, 1) || ++ ! ico_read_int16 (fp, &header.icon_count, 1) || ++ header.reserved != 0 || ++ header.resource_type != 1) + { + return 0; + } ++ + return header.icon_count; + } + +@@ -148,22 +150,25 @@ ico_read_size (FILE *fp, + gint32 color_type; + guint32 magic; + +- if ( fseek (fp, info->offset, SEEK_SET) < 0 ) ++ if (fseek (fp, info->offset, SEEK_SET) < 0) + return FALSE; + + ico_read_int32 (fp, &magic, 1); ++ + if (magic == ICO_PNG_MAGIC) + { + png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, + NULL); +- if (! png_ptr ) ++ if (! png_ptr) + return FALSE; ++ + info_ptr = png_create_info_struct (png_ptr); +- if (! info_ptr ) ++ if (! info_ptr) + { + png_destroy_read_struct (&png_ptr, NULL, NULL); + return FALSE; + } ++ + if (setjmp (png_jmpbuf (png_ptr))) + { + png_destroy_read_struct (&png_ptr, NULL, NULL); +@@ -182,8 +187,8 @@ ico_read_size (FILE *fp, + } + else if (magic == 40) + { +- if (ico_read_int32 (fp, &info->width, 1) +- && ico_read_int32 (fp, &info->height, 1)) ++ if (ico_read_int32 (fp, &info->width, 1) && ++ ico_read_int32 (fp, &info->height, 1)) + { + info->height /= 2; + D(("ico_read_size: ICO: %ix%i\n", info->width, info->height)); +@@ -200,8 +205,9 @@ ico_read_size (FILE *fp, + } + + static IcoLoadInfo* +-ico_read_info (FILE *fp, +- gint icon_count) ++ico_read_info (FILE *fp, ++ gint icon_count, ++ GError **error) + { + gint i; + IcoFileEntry *entries; +@@ -209,8 +215,11 @@ ico_read_info (FILE *fp, + + /* read icon entries */ + entries = g_new (IcoFileEntry, icon_count); +- if ( fread (entries, sizeof(IcoFileEntry), icon_count, fp) <= 0 ) ++ if (fread (entries, sizeof (IcoFileEntry), icon_count, fp) <= 0) + { ++ g_set_error (error, G_FILE_ERROR, 0, ++ _("Could not read '%lu' bytes"), ++ sizeof (IcoFileEntry)); + g_free (entries); + return NULL; + } +@@ -218,23 +227,33 @@ ico_read_info (FILE *fp, + info = g_new (IcoLoadInfo, icon_count); + for (i = 0; i < icon_count; i++) + { +- info[i].width = entries[i].width; ++ info[i].width = entries[i].width; + info[i].height = entries[i].height; +- info[i].bpp = GUINT16_FROM_LE (entries[i].bpp); +- info[i].size = GUINT32_FROM_LE (entries[i].size); ++ info[i].bpp = GUINT16_FROM_LE (entries[i].bpp); ++ info[i].size = GUINT32_FROM_LE (entries[i].size); + info[i].offset = GUINT32_FROM_LE (entries[i].offset); + + if (info[i].width == 0 || info[i].height == 0) + { +- ico_read_size (fp, info+i); ++ ico_read_size (fp, info + i); + } + + D(("ico_read_info: %ix%i (%i bits, size: %i, offset: %i)\n", + info[i].width, info[i].height, info[i].bpp, + info[i].size, info[i].offset)); ++ ++ if (info[i].width == 0 || info[i].height == 0) ++ { ++ g_set_error (error, G_FILE_ERROR, 0, ++ _("Icon #%d has zero width or height"), i); ++ g_free (info); ++ g_free (entries); ++ return NULL; ++ } + } + + g_free (entries); ++ + return info; + } + +@@ -256,10 +275,10 @@ ico_read_png (FILE *fp, + gint i; + + png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); +- if (! png_ptr ) ++ if (! png_ptr) + return FALSE; + info = png_create_info_struct (png_ptr); +- if (! info ) ++ if (! info) + { + png_destroy_read_struct (&png_ptr, NULL, NULL); + return FALSE; +@@ -287,14 +306,14 @@ ico_read_png (FILE *fp, + { + case PNG_COLOR_TYPE_GRAY: + png_set_expand_gray_1_2_4_to_8 (png_ptr); +- if ( bit_depth == 16 ) ++ if (bit_depth == 16) + png_set_strip_16 (png_ptr); + png_set_gray_to_rgb (png_ptr); + png_set_add_alpha (png_ptr, 0xff, PNG_FILLER_AFTER); + break; + case PNG_COLOR_TYPE_GRAY_ALPHA: + png_set_expand_gray_1_2_4_to_8 (png_ptr); +- if ( bit_depth == 16 ) ++ if (bit_depth == 16) + png_set_strip_16 (png_ptr); + png_set_gray_to_rgb (png_ptr); + break; +@@ -427,16 +446,18 @@ ico_read_icon (FILE *fp, + data.planes, data.image_size, data.bpp, + data.used_clrs, data.important_clrs)); + +- if (data.planes != 1 +- || data.compression != 0) ++ if (data.planes != 1 || ++ data.compression != 0) + { + D(("skipping image: invalid header\n")); + return FALSE; + } + +- if (data.bpp != 1 && data.bpp != 4 +- && data.bpp != 8 && data.bpp != 24 +- && data.bpp != 32) ++ if (data.bpp != 1 && ++ data.bpp != 4 && ++ data.bpp != 8 && ++ data.bpp != 24 && ++ data.bpp != 32) + { + D(("skipping image: invalid depth: %i\n", data.bpp)); + return FALSE; +@@ -590,8 +611,8 @@ ico_load_layer (FILE *fp, + GeglBuffer *buffer; + gchar name[ICO_MAXBUF]; + +- if ( fseek (fp, info->offset, SEEK_SET) < 0 +- || !ico_read_int32 (fp, &first_bytes, 1) ) ++ if (fseek (fp, info->offset, SEEK_SET) < 0 || ++ ! ico_read_int32 (fp, &first_bytes, 1)) + return -1; + + if (first_bytes == ICO_PNG_MAGIC) +@@ -643,7 +664,7 @@ ico_load_image (const gchar *filename, + gimp_filename_to_utf8 (filename)); + + fp = g_fopen (filename, "rb"); +- if (! fp ) ++ if (! fp) + { + g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), + _("Could not open '%s' for reading: %s"), +@@ -658,8 +679,8 @@ ico_load_image (const gchar *filename, + return -1; + } + +- info = ico_read_info (fp, icon_count); +- if (!info) ++ info = ico_read_info (fp, icon_count, error); ++ if (! info) + { + fclose (fp); + return -1; +@@ -670,12 +691,12 @@ ico_load_image (const gchar *filename, + max_height = 0; + for (i = 0; i < icon_count; i++) + { +- if ( info[i].width > max_width ) ++ if (info[i].width > max_width) + max_width = info[i].width; +- if ( info[i].height > max_height ) ++ if (info[i].height > max_height) + max_height = info[i].height; + } +- if ( max_width <= 0 || max_height <= 0 ) ++ if (max_width <= 0 || max_height <= 0) + { + g_free (info); + fclose (fp); +@@ -721,7 +742,7 @@ ico_load_thumbnail_image (const gchar *filename, + gimp_filename_to_utf8 (filename)); + + fp = g_fopen (filename, "rb"); +- if (! fp ) ++ if (! fp) + { + g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), + _("Could not open '%s' for reading: %s"), +@@ -730,7 +751,7 @@ ico_load_thumbnail_image (const gchar *filename, + } + + icon_count = ico_read_init (fp); +- if (! icon_count ) ++ if (! icon_count) + { + fclose (fp); + return -1; +@@ -739,8 +760,8 @@ ico_load_thumbnail_image (const gchar *filename, + D(("*** %s: Microsoft icon file, containing %i icon(s)\n", + filename, icon_count)); + +- info = ico_read_info (fp, icon_count); +- if (! info ) ++ info = ico_read_info (fp, icon_count, error); ++ if (! info) + { + fclose (fp); + return -1; +@@ -758,9 +779,9 @@ ico_load_thumbnail_image (const gchar *filename, + + match = i; + } +- else if ( w == info[i].width +- && h == info[i].height +- && info[i].bpp > bpp ) ++ else if (w == info[i].width && ++ h == info[i].height && ++ info[i].bpp > bpp) + { + /* better quality */ + bpp = info[i].bpp; +-- +cgit v0.12 + diff --git a/media-gfx/gimp/files/gimp-2.9.4-gegl-bin.patch b/media-gfx/gimp/files/gimp-2.9.4-gegl-bin.patch new file mode 100644 index 000000000000..31057b5796df --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.9.4-gegl-bin.patch @@ -0,0 +1,28 @@ +From 8d5de5ce62cd0410c9bccaa77725d0cad051faad Mon Sep 17 00:00:00 2001 +From: Sebastian Pipping +Date: Mon, 18 Jul 2016 17:42:45 +0200 +Subject: [PATCH] Fix gegl executable name to check for + +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 45b31b1..0e5be99 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -674,9 +674,9 @@ else + fi + AC_MSG_RESULT($have_glib_2_43) + +-AC_PATH_PROG(GEGL, gegl, no) ++AC_PATH_PROG(GEGL, gegl-0.3, no) + if test "x$GEGL" = xno; then +- add_deps_error([gegl], [Could not find gegl in your PATH.]) ++ add_deps_error([gegl], [Could not find gegl-0.3 in your PATH.]) + fi + + +-- +2.9.2 + diff --git a/media-gfx/gimp/files/gimp-2.9.4-mkdir-makefile.patch b/media-gfx/gimp/files/gimp-2.9.4-mkdir-makefile.patch new file mode 100644 index 000000000000..661ad699f5de --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.9.4-mkdir-makefile.patch @@ -0,0 +1,36 @@ +From c081a26345ad1c5bdf6f4ffec27bca517de6d594 Mon Sep 17 00:00:00 2001 +From: Sebastian Pipping +Date: Sat, 23 Jul 2016 01:02:10 +0200 +Subject: [PATCH] Fix creation of output directories + +https://bugs.gentoo.org/show_bug.cgi?id=589394 +--- + icons/Symbolic-Inverted/Makefile.am | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/icons/Symbolic-Inverted/Makefile.am b/icons/Symbolic-Inverted/Makefile.am +index 2981cfc..f3fe6a5 100644 +--- a/icons/Symbolic-Inverted/Makefile.am ++++ b/icons/Symbolic-Inverted/Makefile.am +@@ -10,14 +10,14 @@ include $(top_srcdir)/icons/icon-list.mk + # As exceptions, we do not want to invert some icons. + # Just use these as-is: gimp-default-colors, gimp-toilet-paper.png. + 12/gimp-default-colors.png: $(top_srcdir)/icons/Symbolic/12/gimp-default-colors.png +- mkdir -p `dirname $<` && cp -f $< $@ ++ mkdir -p `dirname $@` && cp -f $< $@ + scalable/gimp-default-colors.svg: ../Symbolic/scalable/gimp-default-colors.svg +- mkdir -p `dirname $<` && cp -f $< $@ ++ mkdir -p `dirname $@` && cp -f $< $@ + + %/gimp-toilet-paper.png: $(top_srcdir)/icons/Symbolic/$(@D)/gimp-toilet-paper.png +- mkdir -p `dirname $<` && cp -f $< $@ ++ mkdir -p `dirname $@` && cp -f $< $@ + scalable/gimp-toilet-paper.svg: ../Symbolic/scalable/gimp-toilet-paper.svg +- mkdir -p `dirname $<` && cp -f $< $@ ++ mkdir -p `dirname $@` && cp -f $< $@ + + # Other exceptions: inverted gimp-color-picker-white|black are generated + # from each other. +-- +2.9.2 + diff --git a/media-gfx/gimp/files/gimp-2.9.6-underlinking.patch b/media-gfx/gimp/files/gimp-2.9.6-underlinking.patch new file mode 100644 index 000000000000..9208c2f329b3 --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.9.6-underlinking.patch @@ -0,0 +1,20 @@ +diff --git a/libgimpbase/Makefile.am b/libgimpbase/Makefile.am +index a1a6719..85c8518 100644 +--- a/libgimpbase/Makefile.am ++++ b/libgimpbase/Makefile.am +@@ -22,6 +22,7 @@ uninstall-libtool-import-lib: + -rm $(DESTDIR)$(libdir)/libgimpbase-$(GIMP_API_VERSION).dll.a + -rm $(DESTDIR)$(libdir)/gimpbase.def + else ++libm = -lm + install-libtool-import-lib: + uninstall-libtool-import-lib: + endif +@@ -169,6 +170,7 @@ EXTRA_libgimpbase_@GIMP_API_VERSION@_la_DEPENDENCIES = $(gimpbase_def) + libgimpbase_@GIMP_API_VERSION@_la_LIBADD = \ + $(GIO_LIBS) \ + $(GEXIV2_LIBS) \ ++ $(libm) \ + $(ole32_lib) + + install-data-local: install-ms-lib install-libtool-import-lib -- cgit v1.2.3