From f213d8995e2df4482e674c39379afab02bb562a0 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Tue, 29 Sep 2009 04:56:38 +0000 Subject: [PATCH 01/14] Initialize branch F-12 for gimp --- branch | 1 + 1 file changed, 1 insertion(+) create mode 100644 branch diff --git a/branch b/branch new file mode 100644 index 0000000..06de2d2 --- /dev/null +++ b/branch @@ -0,0 +1 @@ +F-12 From 96c3442cd5b44c03a7ac1f2bd1084a66e84f1156 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Tue, 17 Nov 2009 11:23:45 +0000 Subject: [PATCH 02/14] avoid overflow in the BMP image file plugin (#537356) avoid overflow in the PSD image file plugin (#537370) update jpeg-units patch --- gimp-2.6.2-jpeg-units.patch | 29 ---- gimp-2.6.7-bmp-hardening.patch | 119 +++++++++++++++ gimp-2.6.7-jpeg-units.patch | 45 ++++++ gimp-2.6.7-psd-hardening.patch | 259 +++++++++++++++++++++++++++++++++ gimp.spec | 21 ++- 5 files changed, 440 insertions(+), 33 deletions(-) delete mode 100644 gimp-2.6.2-jpeg-units.patch create mode 100644 gimp-2.6.7-bmp-hardening.patch create mode 100644 gimp-2.6.7-jpeg-units.patch create mode 100644 gimp-2.6.7-psd-hardening.patch diff --git a/gimp-2.6.2-jpeg-units.patch b/gimp-2.6.2-jpeg-units.patch deleted file mode 100644 index c239031..0000000 --- a/gimp-2.6.2-jpeg-units.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff -up gimp-2.6.2/plug-ins/file-jpeg/jpeg-save.c.jpeg-units gimp-2.6.2/plug-ins/file-jpeg/jpeg-save.c ---- gimp-2.6.2/plug-ins/file-jpeg/jpeg-save.c.jpeg-units 2008-10-30 10:32:32.000000000 +0100 -+++ gimp-2.6.2/plug-ins/file-jpeg/jpeg-save.c 2008-11-11 12:32:18.000000000 +0100 -@@ -192,14 +192,19 @@ background_jpeg_save (PreviewPersistent - /* display the preview stuff */ - if (!pp->abort_me) - { -- struct stat buf; -- gchar temp[128]; -+ struct stat buf; -+ gchar *text; -+ gchar *size_text; - - g_stat (pp->file_name, &buf); -- g_snprintf (temp, sizeof (temp), -- _("File size: %02.01f kB"), -- (gdouble) (buf.st_size) / 1024.0); -- gtk_label_set_text (GTK_LABEL (preview_size), temp); -+ -+ size_text = g_format_size_for_display (buf.st_size); -+ text = g_strdup_printf (_("File size: %s"), size_text); -+ -+ gtk_label_set_text (GTK_LABEL (preview_size), text); -+ -+ g_free (text); -+ g_free (size_text); - - /* and load the preview */ - load_image (pp->file_name, GIMP_RUN_NONINTERACTIVE, TRUE, NULL); diff --git a/gimp-2.6.7-bmp-hardening.patch b/gimp-2.6.7-bmp-hardening.patch new file mode 100644 index 0000000..187ba55 --- /dev/null +++ b/gimp-2.6.7-bmp-hardening.patch @@ -0,0 +1,119 @@ +commit 57aedabfa3bc555e4d68ad916c757354d518b421 +Author: Nils Philippsen +Date: Tue Nov 17 11:52:25 2009 +0100 + + patch: bmp-hardening + + Squashed commit of the following: + + commit d7ee36732bc37f4412c82f98473288fde2f6f151 + Author: Nils Philippsen + Date: Mon Nov 16 18:16:38 2009 +0100 + + Ensure valid bit depths when reading BMP files. + (cherry picked from commit 16e6a37687bb4b9748c5a5d166d90f5d5bd2e9f3) + (cherry picked from commit 153ae579f7e7508d7a5b95bd569e91890f6b666e) + + Signed-off-by: Nils Philippsen + + commit b76b8400dfffd99826fe73dee81d76029b808689 + Author: Nils Philippsen + Date: Mon Nov 16 17:16:09 2009 +0100 + + Use more defensive coding in plausibility check. + + Use an equivalent division instead of multiplying values and checking if + they are more than G_MAXINT32, because divisions cannot overflow. + (cherry picked from commit f63ba36dd9cc01ca6da83fa05ddd12419ad8953e) + (cherry picked from commit 6e8ff603a2ee6a0940373723d1f075930dfd3ce0) + + Signed-off-by: Nils Philippsen + + commit c8bd5c99decca02158f9c0218b33fa057bfdf5ce + Author: Nils Philippsen + Date: Mon Nov 16 17:15:32 2009 +0100 + + Make plausibility check easier to understand. + + Explicitly check that Bitmap_Head.biHeight is not G_MININT32 + instead of relying on ABS(G_MININT32) being negative. + (cherry picked from commit 43d57c666346320436a0b668de5525387952784e) + (cherry picked from commit 0214e1ff271a5310731de81d00450a92d9bf0fcd) + + Signed-off-by: Nils Philippsen + + commit eec97e14def220b1de45dcece0a63eb9925f701f + Author: Simon Budig + Date: Tue Nov 10 00:08:59 2009 +0100 + + Harden the BMP plugin against integer overflows. + + Issues discovered by Stefan Cornelius, Secunia Research, advisory SA37232 + and CVE identifier CVE-2009-1570. Fixes bug #600484. + (cherry picked from commit df2b0aca2e7cdb95ebfd3454c65aaba0a83e9bbe) + + Signed-off-by: Nils Philippsen + +diff --git a/plug-ins/file-bmp/bmp-read.c b/plug-ins/file-bmp/bmp-read.c +index a1ebe47..7ac4cc4 100644 +--- a/plug-ins/file-bmp/bmp-read.c ++++ b/plug-ins/file-bmp/bmp-read.c +@@ -400,9 +400,26 @@ ReadBMP (const gchar *name, + } + } + +- /* Valid bitpdepthis 1, 4, 8, 16, 24, 32 */ ++ /* Valid bit depth is 1, 4, 8, 16, 24, 32 */ + /* 16 is awful, we should probably shoot whoever invented it */ + ++ switch (Bitmap_Head.biBitCnt) ++ { ++ case 1: ++ case 2: ++ case 4: ++ case 8: ++ case 16: ++ case 24: ++ case 32: ++ break; ++ default: ++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, ++ _("'%s' is not a valid BMP file"), ++ gimp_filename_to_utf8 (filename)); ++ return -1; ++ } ++ + /* There should be some colors used! */ + + ColormapSize = +@@ -424,7 +441,10 @@ ReadBMP (const gchar *name, + return -1; + } + +- if (Bitmap_Head.biWidth < 0) ++ /* biHeight may be negative, but G_MININT32 is dangerous because: ++ G_MININT32 == -(G_MININT32) */ ++ if (Bitmap_Head.biWidth < 0 || ++ Bitmap_Head.biHeight == G_MININT32) + { + g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, + _("'%s' is not a valid BMP file"), +@@ -448,6 +468,18 @@ ReadBMP (const gchar *name, + return -1; + } + ++ /* protect against integer overflows caused by malicious BMPs */ ++ /* use divisions in comparisons to avoid type overflows */ ++ ++ if (((guint64) Bitmap_Head.biWidth) > G_MAXINT32 / Bitmap_Head.biBitCnt || ++ ((guint64) Bitmap_Head.biWidth) > (G_MAXINT32 / ABS (Bitmap_Head.biHeight)) / 4) ++ { ++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, ++ _("'%s' is not a valid BMP file"), ++ gimp_filename_to_utf8 (filename)); ++ return -1; ++ } ++ + /* Windows and OS/2 declare filler so that rows are a multiple of + * word length (32 bits == 4 bytes) + */ diff --git a/gimp-2.6.7-jpeg-units.patch b/gimp-2.6.7-jpeg-units.patch new file mode 100644 index 0000000..71f460a --- /dev/null +++ b/gimp-2.6.7-jpeg-units.patch @@ -0,0 +1,45 @@ +commit f6f34fd0cd6d523cc472351bcdc9b9ae180aac41 +Author: Sven Neumann +Date: Mon Nov 3 16:39:20 2008 +0000 + + patch: jpeg-units + + Bug 559081 – JPEG Save dialog preview should adjust size units + + 2008-11-03 Sven Neumann + + Bug 559081 – JPEG Save dialog preview should adjust size units + + * plug-ins/file-jpeg/jpeg-save.c: use + g_format_size_for_display() + to display the JPEG file size. + + svn path=/trunk/; revision=27532 + + Signed-off-by: Nils Philippsen + +diff --git a/plug-ins/file-jpeg/jpeg-save.c b/plug-ins/file-jpeg/jpeg-save.c +index 2d0d249..35cda17 100644 +--- a/plug-ins/file-jpeg/jpeg-save.c ++++ b/plug-ins/file-jpeg/jpeg-save.c +@@ -192,14 +192,14 @@ background_jpeg_save (PreviewPersistent *pp) + /* display the preview stuff */ + if (!pp->abort_me) + { +- struct stat buf; +- gchar temp[128]; ++ struct stat buf; ++ gchar *text; + + g_stat (pp->file_name, &buf); +- g_snprintf (temp, sizeof (temp), +- _("File size: %02.01f kB"), +- (gdouble) (buf.st_size) / 1024.0); +- gtk_label_set_text (GTK_LABEL (preview_size), temp); ++ text = g_strdup_printf (_("File size: %s"), ++ g_format_size_for_display (buf.st_size)); ++ gtk_label_set_text (GTK_LABEL (preview_size), text); ++ g_free (text); + + /* and load the preview */ + load_image (pp->file_name, GIMP_RUN_NONINTERACTIVE, TRUE, NULL); diff --git a/gimp-2.6.7-psd-hardening.patch b/gimp-2.6.7-psd-hardening.patch new file mode 100644 index 0000000..138920c --- /dev/null +++ b/gimp-2.6.7-psd-hardening.patch @@ -0,0 +1,259 @@ +commit f53faac253bbf2f8326a4898c805fb3596694665 +Author: Nils Philippsen +Date: Tue Nov 17 11:56:08 2009 +0100 + + patch: psd-hardening + + Squashed commit of the following: + + commit de05a3ec3d0a452fb48d4705cec8d4bb505364d2 + Author: Simon Budig + Date: Tue Nov 17 00:41:39 2009 +0100 + + Harden the PSD plugin against integer overflows. + + Issues discovered by Stefan Cornelius, Secunia Research, advisory SA37232 + and CVE identifier CVE-2009-3909. Fixes bug #600741. + (cherry picked from commit 9cc8d78ff33b7a36852b74e64b427489cad44d0e) + (cherry picked from commit 88eccea84aa375197cc04a2a0e2e29debb56bfa5) + + Signed-off-by: Nils Philippsen + + commit 35ec53d2a1363380a0c6c3f64280e99d7d07f90a + Author: Simon Budig + Date: Tue Nov 17 01:12:19 2009 +0100 + + Fix the PSD structs to use signed ints for bounding box coordinates. + (cherry picked from commit 0e440cb6d4d6ee029667363d244aff61b154c33c) + (cherry picked from commit 687ec47914ec08d6e460918cb641c196d80140a3) + + Signed-off-by: Nils Philippsen + +diff --git a/plug-ins/file-psd/psd-load.c b/plug-ins/file-psd/psd-load.c +index d0a8455..1b4e944 100644 +--- a/plug-ins/file-psd/psd-load.c ++++ b/plug-ins/file-psd/psd-load.c +@@ -304,6 +304,15 @@ read_header_block (PSDimage *img_a, + return -1; + } + ++ /* img_a->rows is sanitized above, so a division by zero is avoided here */ ++ if (img_a->columns > G_MAXINT32 / img_a->rows) ++ { ++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, ++ _("Unsupported or invalid image size: %dx%d"), ++ img_a->columns, img_a->rows); ++ return -1; ++ } ++ + if (img_a->color_mode != PSD_BITMAP + && img_a->color_mode != PSD_GRAYSCALE + && img_a->color_mode != PSD_INDEXED +@@ -533,10 +542,10 @@ read_layer_block (PSDimage *img_a, + psd_set_error (feof (f), errno, error); + return NULL; + } +- lyr_a[lidx]->top = GUINT32_FROM_BE (lyr_a[lidx]->top); +- lyr_a[lidx]->left = GUINT32_FROM_BE (lyr_a[lidx]->left); +- lyr_a[lidx]->bottom = GUINT32_FROM_BE (lyr_a[lidx]->bottom); +- lyr_a[lidx]->right = GUINT32_FROM_BE (lyr_a[lidx]->right); ++ lyr_a[lidx]->top = GINT32_FROM_BE (lyr_a[lidx]->top); ++ lyr_a[lidx]->left = GINT32_FROM_BE (lyr_a[lidx]->left); ++ lyr_a[lidx]->bottom = GINT32_FROM_BE (lyr_a[lidx]->bottom); ++ lyr_a[lidx]->right = GINT32_FROM_BE (lyr_a[lidx]->right); + lyr_a[lidx]->num_channels = GUINT16_FROM_BE (lyr_a[lidx]->num_channels); + + if (lyr_a[lidx]->num_channels > MAX_CHANNELS) +@@ -546,14 +555,16 @@ read_layer_block (PSDimage *img_a, + lyr_a[lidx]->num_channels); + return NULL; + } +- if (lyr_a[lidx]->bottom - lyr_a[lidx]->top > GIMP_MAX_IMAGE_SIZE) ++ if (lyr_a[lidx]->bottom < lyr_a[lidx]->top || ++ lyr_a[lidx]->bottom - lyr_a[lidx]->top > GIMP_MAX_IMAGE_SIZE) + { + g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, + _("Unsupported or invalid layer height: %d"), + lyr_a[lidx]->bottom - lyr_a[lidx]->top); + return NULL; + } +- if (lyr_a[lidx]->right - lyr_a[lidx]->left > GIMP_MAX_IMAGE_SIZE) ++ if (lyr_a[lidx]->right < lyr_a[lidx]->left || ++ lyr_a[lidx]->right - lyr_a[lidx]->left > GIMP_MAX_IMAGE_SIZE) + { + g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, + _("Unsupported or invalid layer width: %d"), +@@ -561,6 +572,16 @@ read_layer_block (PSDimage *img_a, + return NULL; + } + ++ if ((lyr_a[lidx]->right - lyr_a[lidx]->left) > ++ G_MAXINT32 / MAX (lyr_a[lidx]->bottom - lyr_a[lidx]->top, 1)) ++ { ++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, ++ _("Unsupported or invalid layer size: %dx%d"), ++ lyr_a[lidx]->right - lyr_a[lidx]->left, ++ lyr_a[lidx]->bottom - lyr_a[lidx]->top); ++ return NULL; ++ } ++ + IFDBG(2) g_debug ("Layer %d, Coords %d %d %d %d, channels %d, ", + lidx, lyr_a[lidx]->left, lyr_a[lidx]->top, + lyr_a[lidx]->right, lyr_a[lidx]->bottom, +@@ -670,13 +691,13 @@ read_layer_block (PSDimage *img_a, + return NULL; + } + lyr_a[lidx]->layer_mask.top = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.top); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.top); + lyr_a[lidx]->layer_mask.left = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.left); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.left); + lyr_a[lidx]->layer_mask.bottom = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.bottom); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.bottom); + lyr_a[lidx]->layer_mask.right = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.right); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.right); + lyr_a[lidx]->layer_mask.mask_flags.relative_pos = + lyr_a[lidx]->layer_mask.flags & 1 ? TRUE : FALSE; + lyr_a[lidx]->layer_mask.mask_flags.disabled = +@@ -702,21 +723,21 @@ read_layer_block (PSDimage *img_a, + return NULL; + } + lyr_a[lidx]->layer_mask_extra.top = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.top); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.top); + lyr_a[lidx]->layer_mask_extra.left = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.left); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.left); + lyr_a[lidx]->layer_mask_extra.bottom = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.bottom); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.bottom); + lyr_a[lidx]->layer_mask_extra.right = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.right); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.right); + lyr_a[lidx]->layer_mask.top = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.top); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.top); + lyr_a[lidx]->layer_mask.left = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.left); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.left); + lyr_a[lidx]->layer_mask.bottom = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.bottom); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.bottom); + lyr_a[lidx]->layer_mask.right = +- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.right); ++ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.right); + lyr_a[lidx]->layer_mask.mask_flags.relative_pos = + lyr_a[lidx]->layer_mask.flags & 1 ? TRUE : FALSE; + lyr_a[lidx]->layer_mask.mask_flags.disabled = +@@ -734,6 +755,34 @@ read_layer_block (PSDimage *img_a, + } + } + ++ /* sanity checks */ ++ if (lyr_a[lidx]->layer_mask.bottom < lyr_a[lidx]->layer_mask.top || ++ lyr_a[lidx]->layer_mask.bottom - lyr_a[lidx]->layer_mask.top > GIMP_MAX_IMAGE_SIZE) ++ { ++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, ++ _("Unsupported or invalid layer mask height: %d"), ++ lyr_a[lidx]->layer_mask.bottom - lyr_a[lidx]->layer_mask.top); ++ return NULL; ++ } ++ if (lyr_a[lidx]->layer_mask.right < lyr_a[lidx]->layer_mask.left || ++ lyr_a[lidx]->layer_mask.right - lyr_a[lidx]->layer_mask.left > GIMP_MAX_IMAGE_SIZE) ++ { ++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, ++ _("Unsupported or invalid layer mask width: %d"), ++ lyr_a[lidx]->layer_mask.right - lyr_a[lidx]->layer_mask.left); ++ return NULL; ++ } ++ ++ if ((lyr_a[lidx]->layer_mask.right - lyr_a[lidx]->layer_mask.left) > ++ G_MAXINT32 / MAX (lyr_a[lidx]->layer_mask.bottom - lyr_a[lidx]->layer_mask.top, 1)) ++ { ++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, ++ _("Unsupported or invalid layer mask size: %dx%d"), ++ lyr_a[lidx]->layer_mask.right - lyr_a[lidx]->layer_mask.left, ++ lyr_a[lidx]->layer_mask.bottom - lyr_a[lidx]->layer_mask.top); ++ return NULL; ++ } ++ + IFDBG(2) g_debug ("Layer mask coords %d %d %d %d, Rel pos %d", + lyr_a[lidx]->layer_mask.left, + lyr_a[lidx]->layer_mask.top, +@@ -1135,7 +1184,7 @@ add_layers (const gint32 image_id, + psd_set_error (feof (f), errno, error); + return -1; + } +- rle_pack_len[rowi] = GUINT16_FROM_BE (rle_pack_len[rowi]); ++ rle_pack_len[rowi] = GUINT16_FROM_BE (rle_pack_len[rowi]); + } + + IFDBG(3) g_debug ("RLE decode - data"); +@@ -1761,6 +1810,16 @@ read_channel_data (PSDchannel *channel, + + IFDBG(3) g_debug ("raw data size %d x %d = %d", readline_len, + channel->rows, readline_len * channel->rows); ++ ++ /* sanity check, int overflow check (avoid divisions by zero) */ ++ if ((channel->rows == 0) || (channel->columns == 0) || ++ (channel->rows > G_MAXINT32 / channel->columns / MAX (bps >> 3, 1))) ++ { ++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, ++ _("Unsupported or invalid channel size")); ++ return -1; ++ } ++ + raw_data = g_malloc (readline_len * channel->rows); + switch (compression) + { +diff --git a/plug-ins/file-psd/psd.h b/plug-ins/file-psd/psd.h +index 6292747..b0c28ff 100644 +--- a/plug-ins/file-psd/psd.h ++++ b/plug-ins/file-psd/psd.h +@@ -447,10 +447,10 @@ typedef struct + /* PSD Layer mask data (length 20) */ + typedef struct + { +- guint32 top; /* Layer top */ +- guint32 left; /* Layer left */ +- guint32 bottom; /* Layer bottom */ +- guint32 right; /* Layer right */ ++ gint32 top; /* Layer top */ ++ gint32 left; /* Layer left */ ++ gint32 bottom; /* Layer bottom */ ++ gint32 right; /* Layer right */ + guchar def_color; /* Default background colour */ + guchar flags; /* Layer flags */ + guchar extra_def_color; /* Real default background colour */ +@@ -461,20 +461,20 @@ typedef struct + /* PSD Layer mask data (length 36) */ + typedef struct + { +- guint32 top; /* Layer top */ +- guint32 left; /* Layer left */ +- guint32 bottom; /* Layer bottom */ +- guint32 right; /* Layer right */ ++ gint32 top; /* Layer top */ ++ gint32 left; /* Layer left */ ++ gint32 bottom; /* Layer bottom */ ++ gint32 right; /* Layer right */ + } LayerMaskExtra; + + /* PSD Layer data structure */ + typedef struct + { + gboolean drop; /* Do not add layer to GIMP image */ +- guint32 top; /* Layer top */ +- guint32 left; /* Layer left */ +- guint32 bottom; /* Layer bottom */ +- guint32 right; /* Layer right */ ++ gint32 top; /* Layer top */ ++ gint32 left; /* Layer left */ ++ gint32 bottom; /* Layer bottom */ ++ gint32 right; /* Layer right */ + guint16 num_channels; /* Number of channels */ + ChannelLengthInfo *chn_info; /* Channel length info */ + gchar mode_key[4]; /* Blend mode key */ diff --git a/gimp.spec b/gimp.spec index ef1441a..0aeffa2 100644 --- a/gimp.spec +++ b/gimp.spec @@ -31,7 +31,7 @@ Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 Version: 2.6.7 -Release: 2%{?dist} +Release: 3%{?dist} %define binver 2.6 %define gimp_lang_ver 20 %define interfacever 2.0 @@ -122,12 +122,18 @@ Source0: ftp://ftp.gimp.org/pub/gimp/v%{binver}/gimp-%{version}.tar.bz2 Source1: gimp-plugin-mgr.in # distro specific: use xdg-open instead of firefox as web browser Patch0: gimp-2.6.2-xdg-open.patch -# http://bugzilla.gnome.org/show_bug.cgi?id=559081 +# https://bugzilla.gnome.org/show_bug.cgi?id=559081 # "JPEG Save dialog preview should adjust size units" -Patch1: gimp-2.6.2-jpeg-units.patch -# http://bugzilla.gnome.org/show_bug.cgi?id=556896 +Patch1: gimp-2.6.7-jpeg-units.patch +# https://bugzilla.gnome.org/show_bug.cgi?id=556896 # "Dialogs don't get minimized with single image window" Patch2: gimp-2.6.6-minimize-dialogs.patch +# https://bugzilla.gnome.org/show_bug.cgi?id=600484 +# "Gimp BMP Integer Overflow Vulnerability" +Patch3: gimp-2.6.7-bmp-hardening.patch +# https://bugzilla.gnome.org/show_bug.cgi?id=600741 +# '"read_channel_data()" Integer Overflow Vulnerability' +Patch4: gimp-2.6.7-psd-hardening.patch %description GIMP (GNU Image Manipulation Program) is a powerful image composition and @@ -209,6 +215,8 @@ EOF %patch0 -p1 -b .xdg-open %patch1 -p1 -b .jpeg-units %patch2 -p1 -b .minimize-dialogs +%patch3 -p1 -b .bmp-hardening +%patch4 -p1 -b .psd-hardening %build # if [ ! -f configure ]; then @@ -499,6 +507,11 @@ fi %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser %changelog +* Tue Nov 17 2009 Nils Philippsen - 2:2.6.7-3 +- avoid overflow in the BMP image file plugin (#537356) +- avoid overflow in the PSD image file plugin (#537370) +- update jpeg-units patch + * Tue Aug 18 2009 Nils Philippsen - 2:2.6.7-2 - BR: webkitgtk-devel/WebKit-gtk-devel >= 1.1.0 From 54a6fb5cb3974fb5e8e883b5e26c519d45868600 Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Thu, 26 Nov 2009 01:56:40 +0000 Subject: [PATCH 03/14] Fix typo that causes a failure to update the common directory. (releng #2781) --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index b6deb4e..f38628e 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ # Makefile for source rpm: gimp -# $Id: Makefile,v 1.1 2004/09/09 05:10:42 cvsdist Exp $ +# $Id: Makefile,v 1.2 2007/10/15 18:47:27 notting Exp $ NAME := gimp SPECFILE = $(firstword $(wildcard *.spec)) define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done +for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done endef MAKEFILE_COMMON := $(shell $(find-makefile-common)) From a037243fd1e614902ae93e2e5f46ff20bdd632da Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Fri, 11 Dec 2009 09:38:50 +0000 Subject: [PATCH 04/14] version 2.6.8 remove obsolete bmp-hardening, psd-hardening patches --- .cvsignore | 2 +- gimp-2.6.7-bmp-hardening.patch | 119 --------------- gimp-2.6.7-psd-hardening.patch | 259 --------------------------------- gimp.spec | 58 ++++++-- sources | 2 +- 5 files changed, 50 insertions(+), 390 deletions(-) delete mode 100644 gimp-2.6.7-bmp-hardening.patch delete mode 100644 gimp-2.6.7-psd-hardening.patch diff --git a/.cvsignore b/.cvsignore index 978091f..7b9922c 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -gimp-2.6.7.tar.bz2 +gimp-2.6.8.tar.bz2 diff --git a/gimp-2.6.7-bmp-hardening.patch b/gimp-2.6.7-bmp-hardening.patch deleted file mode 100644 index 187ba55..0000000 --- a/gimp-2.6.7-bmp-hardening.patch +++ /dev/null @@ -1,119 +0,0 @@ -commit 57aedabfa3bc555e4d68ad916c757354d518b421 -Author: Nils Philippsen -Date: Tue Nov 17 11:52:25 2009 +0100 - - patch: bmp-hardening - - Squashed commit of the following: - - commit d7ee36732bc37f4412c82f98473288fde2f6f151 - Author: Nils Philippsen - Date: Mon Nov 16 18:16:38 2009 +0100 - - Ensure valid bit depths when reading BMP files. - (cherry picked from commit 16e6a37687bb4b9748c5a5d166d90f5d5bd2e9f3) - (cherry picked from commit 153ae579f7e7508d7a5b95bd569e91890f6b666e) - - Signed-off-by: Nils Philippsen - - commit b76b8400dfffd99826fe73dee81d76029b808689 - Author: Nils Philippsen - Date: Mon Nov 16 17:16:09 2009 +0100 - - Use more defensive coding in plausibility check. - - Use an equivalent division instead of multiplying values and checking if - they are more than G_MAXINT32, because divisions cannot overflow. - (cherry picked from commit f63ba36dd9cc01ca6da83fa05ddd12419ad8953e) - (cherry picked from commit 6e8ff603a2ee6a0940373723d1f075930dfd3ce0) - - Signed-off-by: Nils Philippsen - - commit c8bd5c99decca02158f9c0218b33fa057bfdf5ce - Author: Nils Philippsen - Date: Mon Nov 16 17:15:32 2009 +0100 - - Make plausibility check easier to understand. - - Explicitly check that Bitmap_Head.biHeight is not G_MININT32 - instead of relying on ABS(G_MININT32) being negative. - (cherry picked from commit 43d57c666346320436a0b668de5525387952784e) - (cherry picked from commit 0214e1ff271a5310731de81d00450a92d9bf0fcd) - - Signed-off-by: Nils Philippsen - - commit eec97e14def220b1de45dcece0a63eb9925f701f - Author: Simon Budig - Date: Tue Nov 10 00:08:59 2009 +0100 - - Harden the BMP plugin against integer overflows. - - Issues discovered by Stefan Cornelius, Secunia Research, advisory SA37232 - and CVE identifier CVE-2009-1570. Fixes bug #600484. - (cherry picked from commit df2b0aca2e7cdb95ebfd3454c65aaba0a83e9bbe) - - Signed-off-by: Nils Philippsen - -diff --git a/plug-ins/file-bmp/bmp-read.c b/plug-ins/file-bmp/bmp-read.c -index a1ebe47..7ac4cc4 100644 ---- a/plug-ins/file-bmp/bmp-read.c -+++ b/plug-ins/file-bmp/bmp-read.c -@@ -400,9 +400,26 @@ ReadBMP (const gchar *name, - } - } - -- /* Valid bitpdepthis 1, 4, 8, 16, 24, 32 */ -+ /* Valid bit depth is 1, 4, 8, 16, 24, 32 */ - /* 16 is awful, we should probably shoot whoever invented it */ - -+ switch (Bitmap_Head.biBitCnt) -+ { -+ case 1: -+ case 2: -+ case 4: -+ case 8: -+ case 16: -+ case 24: -+ case 32: -+ break; -+ default: -+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, -+ _("'%s' is not a valid BMP file"), -+ gimp_filename_to_utf8 (filename)); -+ return -1; -+ } -+ - /* There should be some colors used! */ - - ColormapSize = -@@ -424,7 +441,10 @@ ReadBMP (const gchar *name, - return -1; - } - -- if (Bitmap_Head.biWidth < 0) -+ /* biHeight may be negative, but G_MININT32 is dangerous because: -+ G_MININT32 == -(G_MININT32) */ -+ if (Bitmap_Head.biWidth < 0 || -+ Bitmap_Head.biHeight == G_MININT32) - { - g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, - _("'%s' is not a valid BMP file"), -@@ -448,6 +468,18 @@ ReadBMP (const gchar *name, - return -1; - } - -+ /* protect against integer overflows caused by malicious BMPs */ -+ /* use divisions in comparisons to avoid type overflows */ -+ -+ if (((guint64) Bitmap_Head.biWidth) > G_MAXINT32 / Bitmap_Head.biBitCnt || -+ ((guint64) Bitmap_Head.biWidth) > (G_MAXINT32 / ABS (Bitmap_Head.biHeight)) / 4) -+ { -+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, -+ _("'%s' is not a valid BMP file"), -+ gimp_filename_to_utf8 (filename)); -+ return -1; -+ } -+ - /* Windows and OS/2 declare filler so that rows are a multiple of - * word length (32 bits == 4 bytes) - */ diff --git a/gimp-2.6.7-psd-hardening.patch b/gimp-2.6.7-psd-hardening.patch deleted file mode 100644 index 138920c..0000000 --- a/gimp-2.6.7-psd-hardening.patch +++ /dev/null @@ -1,259 +0,0 @@ -commit f53faac253bbf2f8326a4898c805fb3596694665 -Author: Nils Philippsen -Date: Tue Nov 17 11:56:08 2009 +0100 - - patch: psd-hardening - - Squashed commit of the following: - - commit de05a3ec3d0a452fb48d4705cec8d4bb505364d2 - Author: Simon Budig - Date: Tue Nov 17 00:41:39 2009 +0100 - - Harden the PSD plugin against integer overflows. - - Issues discovered by Stefan Cornelius, Secunia Research, advisory SA37232 - and CVE identifier CVE-2009-3909. Fixes bug #600741. - (cherry picked from commit 9cc8d78ff33b7a36852b74e64b427489cad44d0e) - (cherry picked from commit 88eccea84aa375197cc04a2a0e2e29debb56bfa5) - - Signed-off-by: Nils Philippsen - - commit 35ec53d2a1363380a0c6c3f64280e99d7d07f90a - Author: Simon Budig - Date: Tue Nov 17 01:12:19 2009 +0100 - - Fix the PSD structs to use signed ints for bounding box coordinates. - (cherry picked from commit 0e440cb6d4d6ee029667363d244aff61b154c33c) - (cherry picked from commit 687ec47914ec08d6e460918cb641c196d80140a3) - - Signed-off-by: Nils Philippsen - -diff --git a/plug-ins/file-psd/psd-load.c b/plug-ins/file-psd/psd-load.c -index d0a8455..1b4e944 100644 ---- a/plug-ins/file-psd/psd-load.c -+++ b/plug-ins/file-psd/psd-load.c -@@ -304,6 +304,15 @@ read_header_block (PSDimage *img_a, - return -1; - } - -+ /* img_a->rows is sanitized above, so a division by zero is avoided here */ -+ if (img_a->columns > G_MAXINT32 / img_a->rows) -+ { -+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, -+ _("Unsupported or invalid image size: %dx%d"), -+ img_a->columns, img_a->rows); -+ return -1; -+ } -+ - if (img_a->color_mode != PSD_BITMAP - && img_a->color_mode != PSD_GRAYSCALE - && img_a->color_mode != PSD_INDEXED -@@ -533,10 +542,10 @@ read_layer_block (PSDimage *img_a, - psd_set_error (feof (f), errno, error); - return NULL; - } -- lyr_a[lidx]->top = GUINT32_FROM_BE (lyr_a[lidx]->top); -- lyr_a[lidx]->left = GUINT32_FROM_BE (lyr_a[lidx]->left); -- lyr_a[lidx]->bottom = GUINT32_FROM_BE (lyr_a[lidx]->bottom); -- lyr_a[lidx]->right = GUINT32_FROM_BE (lyr_a[lidx]->right); -+ lyr_a[lidx]->top = GINT32_FROM_BE (lyr_a[lidx]->top); -+ lyr_a[lidx]->left = GINT32_FROM_BE (lyr_a[lidx]->left); -+ lyr_a[lidx]->bottom = GINT32_FROM_BE (lyr_a[lidx]->bottom); -+ lyr_a[lidx]->right = GINT32_FROM_BE (lyr_a[lidx]->right); - lyr_a[lidx]->num_channels = GUINT16_FROM_BE (lyr_a[lidx]->num_channels); - - if (lyr_a[lidx]->num_channels > MAX_CHANNELS) -@@ -546,14 +555,16 @@ read_layer_block (PSDimage *img_a, - lyr_a[lidx]->num_channels); - return NULL; - } -- if (lyr_a[lidx]->bottom - lyr_a[lidx]->top > GIMP_MAX_IMAGE_SIZE) -+ if (lyr_a[lidx]->bottom < lyr_a[lidx]->top || -+ lyr_a[lidx]->bottom - lyr_a[lidx]->top > GIMP_MAX_IMAGE_SIZE) - { - g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, - _("Unsupported or invalid layer height: %d"), - lyr_a[lidx]->bottom - lyr_a[lidx]->top); - return NULL; - } -- if (lyr_a[lidx]->right - lyr_a[lidx]->left > GIMP_MAX_IMAGE_SIZE) -+ if (lyr_a[lidx]->right < lyr_a[lidx]->left || -+ lyr_a[lidx]->right - lyr_a[lidx]->left > GIMP_MAX_IMAGE_SIZE) - { - g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, - _("Unsupported or invalid layer width: %d"), -@@ -561,6 +572,16 @@ read_layer_block (PSDimage *img_a, - return NULL; - } - -+ if ((lyr_a[lidx]->right - lyr_a[lidx]->left) > -+ G_MAXINT32 / MAX (lyr_a[lidx]->bottom - lyr_a[lidx]->top, 1)) -+ { -+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, -+ _("Unsupported or invalid layer size: %dx%d"), -+ lyr_a[lidx]->right - lyr_a[lidx]->left, -+ lyr_a[lidx]->bottom - lyr_a[lidx]->top); -+ return NULL; -+ } -+ - IFDBG(2) g_debug ("Layer %d, Coords %d %d %d %d, channels %d, ", - lidx, lyr_a[lidx]->left, lyr_a[lidx]->top, - lyr_a[lidx]->right, lyr_a[lidx]->bottom, -@@ -670,13 +691,13 @@ read_layer_block (PSDimage *img_a, - return NULL; - } - lyr_a[lidx]->layer_mask.top = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.top); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.top); - lyr_a[lidx]->layer_mask.left = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.left); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.left); - lyr_a[lidx]->layer_mask.bottom = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.bottom); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.bottom); - lyr_a[lidx]->layer_mask.right = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.right); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.right); - lyr_a[lidx]->layer_mask.mask_flags.relative_pos = - lyr_a[lidx]->layer_mask.flags & 1 ? TRUE : FALSE; - lyr_a[lidx]->layer_mask.mask_flags.disabled = -@@ -702,21 +723,21 @@ read_layer_block (PSDimage *img_a, - return NULL; - } - lyr_a[lidx]->layer_mask_extra.top = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.top); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.top); - lyr_a[lidx]->layer_mask_extra.left = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.left); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.left); - lyr_a[lidx]->layer_mask_extra.bottom = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.bottom); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.bottom); - lyr_a[lidx]->layer_mask_extra.right = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.right); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask_extra.right); - lyr_a[lidx]->layer_mask.top = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.top); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.top); - lyr_a[lidx]->layer_mask.left = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.left); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.left); - lyr_a[lidx]->layer_mask.bottom = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.bottom); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.bottom); - lyr_a[lidx]->layer_mask.right = -- GUINT32_FROM_BE (lyr_a[lidx]->layer_mask.right); -+ GINT32_FROM_BE (lyr_a[lidx]->layer_mask.right); - lyr_a[lidx]->layer_mask.mask_flags.relative_pos = - lyr_a[lidx]->layer_mask.flags & 1 ? TRUE : FALSE; - lyr_a[lidx]->layer_mask.mask_flags.disabled = -@@ -734,6 +755,34 @@ read_layer_block (PSDimage *img_a, - } - } - -+ /* sanity checks */ -+ if (lyr_a[lidx]->layer_mask.bottom < lyr_a[lidx]->layer_mask.top || -+ lyr_a[lidx]->layer_mask.bottom - lyr_a[lidx]->layer_mask.top > GIMP_MAX_IMAGE_SIZE) -+ { -+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, -+ _("Unsupported or invalid layer mask height: %d"), -+ lyr_a[lidx]->layer_mask.bottom - lyr_a[lidx]->layer_mask.top); -+ return NULL; -+ } -+ if (lyr_a[lidx]->layer_mask.right < lyr_a[lidx]->layer_mask.left || -+ lyr_a[lidx]->layer_mask.right - lyr_a[lidx]->layer_mask.left > GIMP_MAX_IMAGE_SIZE) -+ { -+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, -+ _("Unsupported or invalid layer mask width: %d"), -+ lyr_a[lidx]->layer_mask.right - lyr_a[lidx]->layer_mask.left); -+ return NULL; -+ } -+ -+ if ((lyr_a[lidx]->layer_mask.right - lyr_a[lidx]->layer_mask.left) > -+ G_MAXINT32 / MAX (lyr_a[lidx]->layer_mask.bottom - lyr_a[lidx]->layer_mask.top, 1)) -+ { -+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, -+ _("Unsupported or invalid layer mask size: %dx%d"), -+ lyr_a[lidx]->layer_mask.right - lyr_a[lidx]->layer_mask.left, -+ lyr_a[lidx]->layer_mask.bottom - lyr_a[lidx]->layer_mask.top); -+ return NULL; -+ } -+ - IFDBG(2) g_debug ("Layer mask coords %d %d %d %d, Rel pos %d", - lyr_a[lidx]->layer_mask.left, - lyr_a[lidx]->layer_mask.top, -@@ -1135,7 +1184,7 @@ add_layers (const gint32 image_id, - psd_set_error (feof (f), errno, error); - return -1; - } -- rle_pack_len[rowi] = GUINT16_FROM_BE (rle_pack_len[rowi]); -+ rle_pack_len[rowi] = GUINT16_FROM_BE (rle_pack_len[rowi]); - } - - IFDBG(3) g_debug ("RLE decode - data"); -@@ -1761,6 +1810,16 @@ read_channel_data (PSDchannel *channel, - - IFDBG(3) g_debug ("raw data size %d x %d = %d", readline_len, - channel->rows, readline_len * channel->rows); -+ -+ /* sanity check, int overflow check (avoid divisions by zero) */ -+ if ((channel->rows == 0) || (channel->columns == 0) || -+ (channel->rows > G_MAXINT32 / channel->columns / MAX (bps >> 3, 1))) -+ { -+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, -+ _("Unsupported or invalid channel size")); -+ return -1; -+ } -+ - raw_data = g_malloc (readline_len * channel->rows); - switch (compression) - { -diff --git a/plug-ins/file-psd/psd.h b/plug-ins/file-psd/psd.h -index 6292747..b0c28ff 100644 ---- a/plug-ins/file-psd/psd.h -+++ b/plug-ins/file-psd/psd.h -@@ -447,10 +447,10 @@ typedef struct - /* PSD Layer mask data (length 20) */ - typedef struct - { -- guint32 top; /* Layer top */ -- guint32 left; /* Layer left */ -- guint32 bottom; /* Layer bottom */ -- guint32 right; /* Layer right */ -+ gint32 top; /* Layer top */ -+ gint32 left; /* Layer left */ -+ gint32 bottom; /* Layer bottom */ -+ gint32 right; /* Layer right */ - guchar def_color; /* Default background colour */ - guchar flags; /* Layer flags */ - guchar extra_def_color; /* Real default background colour */ -@@ -461,20 +461,20 @@ typedef struct - /* PSD Layer mask data (length 36) */ - typedef struct - { -- guint32 top; /* Layer top */ -- guint32 left; /* Layer left */ -- guint32 bottom; /* Layer bottom */ -- guint32 right; /* Layer right */ -+ gint32 top; /* Layer top */ -+ gint32 left; /* Layer left */ -+ gint32 bottom; /* Layer bottom */ -+ gint32 right; /* Layer right */ - } LayerMaskExtra; - - /* PSD Layer data structure */ - typedef struct - { - gboolean drop; /* Do not add layer to GIMP image */ -- guint32 top; /* Layer top */ -- guint32 left; /* Layer left */ -- guint32 bottom; /* Layer bottom */ -- guint32 right; /* Layer right */ -+ gint32 top; /* Layer top */ -+ gint32 left; /* Layer left */ -+ gint32 bottom; /* Layer bottom */ -+ gint32 right; /* Layer right */ - guint16 num_channels; /* Number of channels */ - ChannelLengthInfo *chn_info; /* Channel length info */ - gchar mode_key[4]; /* Blend mode key */ diff --git a/gimp.spec b/gimp.spec index 0aeffa2..20edbb4 100644 --- a/gimp.spec +++ b/gimp.spec @@ -30,8 +30,8 @@ Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 -Version: 2.6.7 -Release: 3%{?dist} +Version: 2.6.8 +Release: 1%{?dist} %define binver 2.6 %define gimp_lang_ver 20 %define interfacever 2.0 @@ -128,12 +128,6 @@ Patch1: gimp-2.6.7-jpeg-units.patch # https://bugzilla.gnome.org/show_bug.cgi?id=556896 # "Dialogs don't get minimized with single image window" Patch2: gimp-2.6.6-minimize-dialogs.patch -# https://bugzilla.gnome.org/show_bug.cgi?id=600484 -# "Gimp BMP Integer Overflow Vulnerability" -Patch3: gimp-2.6.7-bmp-hardening.patch -# https://bugzilla.gnome.org/show_bug.cgi?id=600741 -# '"read_channel_data()" Integer Overflow Vulnerability' -Patch4: gimp-2.6.7-psd-hardening.patch %description GIMP (GNU Image Manipulation Program) is a powerful image composition and @@ -215,8 +209,6 @@ EOF %patch0 -p1 -b .xdg-open %patch1 -p1 -b .jpeg-units %patch2 -p1 -b .minimize-dialogs -%patch3 -p1 -b .bmp-hardening -%patch4 -p1 -b .psd-hardening %build # if [ ! -f configure ]; then @@ -507,6 +499,52 @@ fi %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser %changelog +* Fri Dec 11 2009 Nils Philippsen - 2:2.6.8-1 +- version 2.6.8 + + Overview of Changes from GIMP 2.6.7 to GIMP 2.6.8 + ================================================= + + * Bugs fixed: + + 470698 - MapObject cannot modify highlight + 593848 - FG color changed to black when FG-BG Editor tab created + 594651 - layer.scale() raises RuntimeError + 594998 - Keyboard shortcuts does not work for first image when dock + is focused + 599765 - F1 key on gimp-tool-align in menu have wrong link and it + open gimp-tool-move + 600484 - Gimp BMP Integer Overflow Vulnerability + 600741 - "read_channel_data()" Integer Overflow Vulnerability + 601891 - gimp_image_get_selection returns None + 602761 - plug-in-grid: Parameters Horizontal/Vertical Spacing and + Horizontal/Vertical Offset are reversed. + 603995 - PCX plugin doesn't sanitize input to avoid allocation overflows. + 603998 - PCX: Calculating amount of memory to allocate may overflow. + 604000 - SGI: sanitize input + 604001 - SGI: Calculating amount of memory to allocate may overflow. + 604002 - SGI: RLE encoded input data may write beyond allocated buffers + 604004 - SGI: allocate memory consistently + 604008 - GBR, PAT: sanitize input data + 604078 - Crash when pressing Backspace with Free Select Tool + + * Updated and new translations: + + Basque (eu) + British English (en_GB) + Czech (cs) + French (fr) + Greek (el) + Italian (it) + Japanese (ja) + Norwegian Nynorsk (nn) + Polish (pl) + Romanian (ro) + Russian (ru) + Simplified Chinese (zh_CN) + +- remove obsolete bmp-hardening, psd-hardening patches + * Tue Nov 17 2009 Nils Philippsen - 2:2.6.7-3 - avoid overflow in the BMP image file plugin (#537356) - avoid overflow in the PSD image file plugin (#537370) diff --git a/sources b/sources index 5c7b444..71e9928 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -77ed86a8de9b48587efb24f2b115ad38 gimp-2.6.7.tar.bz2 +a4d9462c9420954824a80c9b1963f9d9 gimp-2.6.8.tar.bz2 From d3d63f48f6e508340457ccd5910a091037950015 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Fri, 18 Jun 2010 14:42:33 +0000 Subject: [PATCH 05/14] backport fix for saving indexed PNM files (#605615) --- .cvsignore | 1 + gimp-2.6.8-gold.patch | 616 +++++++++++++++++++++ gimp-2.6.8-gtk219.patch | 79 +++ gimp-2.6.8-indexed-pnm.patch | 54 ++ gimp-2.6.8-never-stack-trace-desktop.patch | 32 ++ gimp.spec | 56 +- sources | 1 + 7 files changed, 832 insertions(+), 7 deletions(-) create mode 100644 gimp-2.6.8-gold.patch create mode 100644 gimp-2.6.8-gtk219.patch create mode 100644 gimp-2.6.8-indexed-pnm.patch create mode 100644 gimp-2.6.8-never-stack-trace-desktop.patch diff --git a/.cvsignore b/.cvsignore index 7b9922c..f67a080 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1,2 @@ gimp-2.6.8.tar.bz2 +gimp-2.6.8-4-automake.patch.bz2 diff --git a/gimp-2.6.8-gold.patch b/gimp-2.6.8-gold.patch new file mode 100644 index 0000000..d4e61df --- /dev/null +++ b/gimp-2.6.8-gold.patch @@ -0,0 +1,616 @@ +From 4dcab3c2904353c0a175765657316bbfc78af0d2 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Thu, 25 Feb 2010 18:04:18 +0100 +Subject: [PATCH] patch: gold + +Squashed commit of the following: + +commit afd331aca4c7cb4a0b53c7b0276253aab82424ae +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + selection-to-path: explicitly specify library dependencies + +commit db8abcd13a4d553d1f3e50e6fb0cc19a7c9f6ae5 +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + pagecurl: explicitly specify library dependencies + +commit 9d4e2aad81e339ae3e2971b7c12d3ae12bd60220 +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + map-object: explicitly specify library dependencies + +commit 257047325c0fb9297d764f34a6d4742fcfb837b7 +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + lighting: explicitly specify library dependencies + +commit 709c245217a301652c1e5a3a288f5ae7c101aa33 +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + imagemap: explicitly specify library dependencies + +commit a40311f72b994c5ffb37a206e7d40ffc099c8205 +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + ifs-compose: explicitly specify library dependencies + +commit aebab1503e2065fe7665abd5818def52603e2eec +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + gradient-flare: explicitly specify library dependencies + +commit 0c7c425d1acdfecf64b453681df25cb08e344338 +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + gimpressionist: explicitly specify library dependencies + +commit 2822fbfd9c0c1c099047d99d41ae9de8c8d52dc3 +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + gfig: explicitly specify library dependencies + +commit 4c0fd7d3f63f25a112271422cecef1b8958a94f9 +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + fractal-explorer: explicitly specify library dependencies + +commit 17e154a2856d0e97ebd76c706b6238fb3b40e74e +Author: Nils Philippsen +Date: Thu Feb 25 15:36:20 2010 +0100 + + flame: explicitly specify library dependencies + +commit f7fadce58851854abb1ed54ce0141c8dc0434c12 +Author: Nils Philippsen +Date: Thu Feb 25 15:11:04 2010 +0100 + + color-rotate: explicitly specify library dependencies + +commit abbb6a2472e7e31e3aaa30c772f8f5dbaaf476c5 +Author: Nils Philippsen +Date: Wed Feb 24 15:40:50 2010 +0100 + + script-fu: explicitly specify library dependencies + +commit da5ee1fe718d9bbbda6c786ebf0f4ded43a7a246 +Author: Manish Singh +Date: Wed Sep 9 17:41:20 2009 -0700 + + Explicit shared lib deps to support gold + + (attempted cherry-picking from commit + 15497c1d6808b1ea479574b0b3e132484f7f172f, resolved conflicts) + + Signed-off-by: Nils Philippsen + +commit 7cae0f249a5d2110a596f3fb22cdd33b07b05f1c +Author: Manish Singh +Date: Sun May 24 10:42:39 2009 -0700 + + Explicitly specify library dependencies at link time, so we can use gold. + (cherry picked from commit 582cb0f14eb9f145bd2a2f5c9fda12309ae0229f) + + Signed-off-by: Nils Philippsen +--- + libgimpthumb/Makefile.am | 5 ++++- + plug-ins/color-rotate/Makefile.am | 12 +++++++----- + plug-ins/common/Makefile.am | 11 ++++++----- + plug-ins/common/mkgen.pl | 11 ++++++----- + plug-ins/flame/Makefile.am | 12 +++++++----- + plug-ins/fractal-explorer/Makefile.am | 12 +++++++----- + plug-ins/gfig/Makefile.am | 12 +++++++----- + plug-ins/gimpressionist/Makefile.am | 12 +++++++----- + plug-ins/gradient-flare/Makefile.am | 12 +++++++----- + plug-ins/help-browser/Makefile.am | 1 + + plug-ins/ifs-compose/Makefile.am | 12 +++++++----- + plug-ins/imagemap/Makefile.am | 12 +++++++----- + plug-ins/lighting/Makefile.am | 12 +++++++----- + plug-ins/map-object/Makefile.am | 12 +++++++----- + plug-ins/metadata/Makefile.am | 5 ++++- + plug-ins/pagecurl/Makefile.am | 12 +++++++----- + plug-ins/script-fu/Makefile.am | 14 ++++++++------ + plug-ins/selection-to-path/Makefile.am | 12 +++++++----- + 18 files changed, 113 insertions(+), 78 deletions(-) + +diff --git a/libgimpthumb/Makefile.am b/libgimpthumb/Makefile.am +index 2e7b531..ee26219 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 +diff --git a/plug-ins/color-rotate/Makefile.am b/plug-ins/color-rotate/Makefile.am +index c713c8c..f7e11b7 100644 +--- a/plug-ins/color-rotate/Makefile.am ++++ b/plug-ins/color-rotate/Makefile.am +@@ -1,16 +1,18 @@ + ## Process this file with automake to produce Makefile.in + ++if OS_WIN32 ++mwindows = -mwindows ++else ++libm = -lm ++endif ++ + libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la + libgimpconfig = $(top_builddir)/libgimpconfig/libgimpconfig-$(GIMP_API_VERSION).la + libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la + libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la + libgimpcolor = $(top_builddir)/libgimpcolor/libgimpcolor-$(GIMP_API_VERSION).la + libgimpbase = $(top_builddir)/libgimpbase/libgimpbase-$(GIMP_API_VERSION).la +-libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la +- +-if OS_WIN32 +-mwindows = -mwindows +-endif ++libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la $(libm) + + AM_LDFLAGS = $(mwindows) + +diff --git a/plug-ins/common/Makefile.am b/plug-ins/common/Makefile.am +index 66dc6dd..d58ecee 100644 +--- a/plug-ins/common/Makefile.am ++++ b/plug-ins/common/Makefile.am +@@ -7,21 +7,22 @@ + ## Modify those two files instead of this one; for most + ## plug-ins you should only need to modify plugin-defs.pl. + ++if OS_WIN32 ++mwindows = -mwindows ++else ++libm = -lm ++endif + + libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la + libgimpbase = $(top_builddir)/libgimpbase/libgimpbase-$(GIMP_API_VERSION).la + libgimpcolor = $(top_builddir)/libgimpcolor/libgimpcolor-$(GIMP_API_VERSION).la + libgimpconfig = $(top_builddir)/libgimpconfig/libgimpconfig-$(GIMP_API_VERSION).la +-libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la ++libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la $(libm) + libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la + libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la + libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la + + +-if OS_WIN32 +-mwindows = -mwindows +-endif +- + AM_LDFLAGS = $(mwindows) + + libexecdir = $(gimpplugindir)/plug-ins +diff --git a/plug-ins/common/mkgen.pl b/plug-ins/common/mkgen.pl +index 40b4b74..b0cd786 100755 +--- a/plug-ins/common/mkgen.pl ++++ b/plug-ins/common/mkgen.pl +@@ -51,21 +51,22 @@ print MK < +Date: Wed, 24 Mar 2010 18:08:01 +0100 +Subject: [PATCH] patch: gtk219 + +Squashed commit of the following: + +commit 726878e604e663488757a3220246c2054f54b843 +Author: Nils Philippsen +Date: Wed Mar 24 15:43:10 2010 +0100 + + backport statusbar code needed for GTK+ >= 2.19.1 + + Use the hbox that is provided via gtk_statusbar_get_message_area() + since GTK+ 2.19.1. +--- + app/display/gimpstatusbar.c | 32 +++++++++++++++++++++++++------- + 1 files changed, 25 insertions(+), 7 deletions(-) + +diff --git a/app/display/gimpstatusbar.c b/app/display/gimpstatusbar.c +index 5e89427..36651cd 100644 +--- a/app/display/gimpstatusbar.c ++++ b/app/display/gimpstatusbar.c +@@ -49,6 +49,9 @@ + /* maximal width of the string holding the cursor-coordinates */ + #define CURSOR_LEN 256 + ++/* the spacing of the hbox */ ++#define HBOX_SPACING 1 ++ + /* spacing between the icon and the statusbar label */ + #define ICON_SPACING 2 + +@@ -152,6 +155,7 @@ static void + gimp_statusbar_init (GimpStatusbar *statusbar) + { + GtkWidget *hbox; ++ GtkWidget *label; + GtkWidget *image; + GimpUnitStore *store; + +@@ -171,13 +175,27 @@ gimp_statusbar_init (GimpStatusbar *statusbar) + statusbar->progress_active = FALSE; + statusbar->progress_shown = FALSE; + +- /* remove the label and insert a hbox */ +- gtk_container_remove (GTK_CONTAINER (GTK_STATUSBAR (statusbar)->frame), +- g_object_ref (GTK_STATUSBAR (statusbar)->label)); +- +- hbox = gtk_hbox_new (FALSE, 1); +- gtk_container_add (GTK_CONTAINER (GTK_STATUSBAR (statusbar)->frame), hbox); +- gtk_widget_show (hbox); ++ label = g_object_ref (GTK_STATUSBAR (statusbar)->label); ++ ++ /* remove the message area or label and insert a hbox */ ++#if GTK_CHECK_VERSION (2, 19, 1) ++ { ++ hbox = gtk_statusbar_get_message_area (GTK_STATUSBAR (statusbar)); ++ gtk_box_set_spacing (GTK_BOX (hbox), HBOX_SPACING); ++ gtk_container_remove (GTK_CONTAINER (hbox), label); ++ } ++#else ++ { ++ GtkWidget *label_parent; ++ ++ label_parent = gtk_widget_get_parent (label); ++ gtk_container_remove (GTK_CONTAINER (label_parent), label); ++ ++ hbox = gtk_hbox_new (FALSE, HBOX_SPACING); ++ gtk_container_add (GTK_CONTAINER (label_parent), hbox); ++ gtk_widget_show (hbox); ++ } ++#endif + + statusbar->cursor_label = gtk_label_new ("8888, 8888"); + gtk_misc_set_alignment (GTK_MISC (statusbar->cursor_label), 0.5, 0.5); +-- +1.6.6.1 + diff --git a/gimp-2.6.8-indexed-pnm.patch b/gimp-2.6.8-indexed-pnm.patch new file mode 100644 index 0000000..9cc983e --- /dev/null +++ b/gimp-2.6.8-indexed-pnm.patch @@ -0,0 +1,54 @@ +From 2bb143afdefb20b51ed6643f84e4862482d0e7dc Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Fri, 18 Jun 2010 16:20:51 +0200 +Subject: [PATCH] patch: indexed-pnm + +Squashed commit of the following: + +commit 83e5714e44d4c14ff162de2450a311dcbeb10ce7 +Author: Sven Neumann +Date: Sat Jan 9 12:12:12 2010 +0100 + + Bug 606372 - Saving to .ppm fails on indexed colorspace + + Don't change the pointer to the colormap and then attempt to free it. + (cherry picked from commit b883d59411dfde28fb0704fa2790e602999f7f6f) +--- + plug-ins/common/file-pnm.c | 11 ++++++----- + 1 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/plug-ins/common/file-pnm.c b/plug-ins/common/file-pnm.c +index 2cd8443..8359f0a 100644 +--- a/plug-ins/common/file-pnm.c ++++ b/plug-ins/common/file-pnm.c +@@ -1103,13 +1103,14 @@ save_image (const gchar *filename, + } + else + { +- gint i; ++ const guchar *c = cmap; ++ gint i; + + for (i = 0; i < num_colors; i++) + { +- red[i] = *cmap++; +- grn[i] = *cmap++; +- blu[i] = *cmap++; ++ red[i] = *c++; ++ grn[i] = *c++; ++ blu[i] = *c++; + } + + rowinfo.red = red; +@@ -1155,7 +1156,7 @@ save_image (const gchar *filename, + d = data; + } + +- (*saverow)(&rowinfo, d); ++ saverow (&rowinfo, d); + d += xres * (np ? np : 1); + + if ((ypos % 20) == 0) +-- +1.7.0.1 + diff --git a/gimp-2.6.8-never-stack-trace-desktop.patch b/gimp-2.6.8-never-stack-trace-desktop.patch new file mode 100644 index 0000000..d342992 --- /dev/null +++ b/gimp-2.6.8-never-stack-trace-desktop.patch @@ -0,0 +1,32 @@ +From 0939c40c21d6750e5d65f2c2b34bf8caaad263f5 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Mon, 19 Apr 2010 18:05:41 +0200 +Subject: [PATCH] patch: never-stack-trace-desktop + +Squashed commit of the following: + +commit 9cb13a72dea56cc16d92b2c71ae16803d229b4ec +Author: Nils Philippsen +Date: Mon Apr 19 18:04:19 2010 +0200 + + add --stack-trace-mode=never to desktop file +--- + desktop/gimp.desktop.in.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/desktop/gimp.desktop.in.in b/desktop/gimp.desktop.in.in +index 776e4ee..639e987 100644 +--- a/desktop/gimp.desktop.in.in ++++ b/desktop/gimp.desktop.in.in +@@ -4,7 +4,7 @@ Type=Application + _Name=GNU Image Manipulation Program + _GenericName=Image Editor + _Comment=Create images and edit photographs +-Exec=@GIMP_COMMAND@ %U ++Exec=@GIMP_COMMAND@ --stack-trace-mode=never %U + TryExec=gimp-@GIMP_APP_VERSION@ + Icon=gimp + Terminal=false +-- +1.6.6.1 + diff --git a/gimp.spec b/gimp.spec index 20edbb4..ec09b87 100644 --- a/gimp.spec +++ b/gimp.spec @@ -31,7 +31,7 @@ Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 Version: 2.6.8 -Release: 1%{?dist} +Release: 8%{?dist} %define binver 2.6 %define gimp_lang_ver 20 %define interfacever 2.0 @@ -99,7 +99,6 @@ BuildRequires: findutils BuildRequires: lcms-devel >= 1.16 %endif -Requires: gimp-libs-%{_arch} = %{?epoch:%{epoch}:}%{version}-%{release} Requires: glib2 >= 2.16.1 Requires: gtk2 >= 2.12.5 Requires: pango >= 1.18.0 @@ -115,8 +114,7 @@ Requires: gimp-print-plugin Requires: hicolor-icon-theme Requires: pygtk2 >= 2.10.4 Requires: xdg-utils -Requires: gimp-libs-%{_arch} = %{?epoch:%{epoch}:}%{version}-%{release} -Provides: gimp-%{_arch} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: gimp-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Source0: ftp://ftp.gimp.org/pub/gimp/v%{binver}/gimp-%{version}.tar.bz2 Source1: gimp-plugin-mgr.in @@ -128,6 +126,16 @@ Patch1: gimp-2.6.7-jpeg-units.patch # https://bugzilla.gnome.org/show_bug.cgi?id=556896 # "Dialogs don't get minimized with single image window" Patch2: gimp-2.6.6-minimize-dialogs.patch +# backport: fix building with "gold" linker +Patch3: gimp-2.6.8-gold.patch +# backport: statusbar code needed for GTK+ >= 2.19.1 (#559726) +Patch4: gimp-2.6.8-gtk219.patch +# distro-specific: add --stack-trace-mode=never to desktop file +Patch5: gimp-2.6.8-never-stack-trace-desktop.patch +# backport: fix saving indexed PNM files (#605615) +Patch6: gimp-2.6.8-indexed-pnm.patch +# Makefile.in files generated by Makefile.am changed in patches +Patch10: gimp-2.6.8-4-automake.patch.bz2 %description GIMP (GNU Image Manipulation Program) is a powerful image composition and @@ -142,7 +150,7 @@ with multi-level undo. Summary: GIMP libraries Group: System Environment/Libraries License: LGPLv2+ -Provides: gimp-libs-%{_arch} = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: gimp-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} %description libs The gimp-libs package contains shared libraries needed for the GNU Image @@ -152,10 +160,11 @@ Manipulation Program (GIMP). Summary: GIMP plugin and extension development kit Group: Development/Libraries License: LGPLv2+ -Requires: gimp-libs-%{_arch} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: gimp-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Requires: gimp-devel-tools = %{?epoch:%{epoch}:}%{version}-%{release} Requires: gtk2-devel Requires: glib2-devel +Requires: gtk-doc Requires: pkgconfig %description devel @@ -178,7 +187,7 @@ Summary: GIMP help browser plug-in Group: Applications/Multimedia License: GPLv2+ Obsoletes: gimp < 2:2.6.0-3 -Requires: gimp-%{_arch} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: gimp%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} %description help-browser The gimp-help-browser package contains a lightweight help browser plugin for @@ -209,6 +218,11 @@ EOF %patch0 -p1 -b .xdg-open %patch1 -p1 -b .jpeg-units %patch2 -p1 -b .minimize-dialogs +%patch3 -p1 -b .gold +%patch4 -p1 -b .gtk219 +%patch5 -p1 -b .never-stack-trace-desktop +%patch6 -p1 -b .indexed-pnm +%patch10 -p1 -b .automake %build # if [ ! -f configure ]; then @@ -499,6 +513,34 @@ fi %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser %changelog +* Fri Jun 18 2010 Nils Philippsen - 2:2.6.8-8 +- backport fix for saving indexed PNM files (#605615) + +* Mon Apr 19 2010 Nils Philippsen - 2:2.6.8-7 +- add --stack-trace-mode=never to desktop file + +* Wed Mar 24 2010 Nils Philippsen - 2:2.6.8-6 +- backport: statusbar code needed for GTK+ >= 2.19.1 (#559726) + +* Fri Feb 26 2010 Nils Philippsen - 2:2.6.8-5 +- require gtk-doc in devel package + +* Thu Feb 25 2010 Nils Philippsen - 2:2.6.8-4 +- add missing explicit libraries + +* Wed Feb 24 2010 Nils Philippsen +- backport: fix building with "gold" linker +- add more explicit libraries + +* Wed Jan 27 2010 Nils Philippsen - 2:2.6.8-3 +- remove wrong dependency (#558836) + +* Mon Jan 25 2010 Nils Philippsen - 2:2.6.8-2 +- rebuild against new babl + +* Wed Jan 20 2010 Nils Philippsen +- use %%_isa instead of %%_arch for architecture-specific dependencies + * Fri Dec 11 2009 Nils Philippsen - 2:2.6.8-1 - version 2.6.8 diff --git a/sources b/sources index 71e9928..4304f9d 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ a4d9462c9420954824a80c9b1963f9d9 gimp-2.6.8.tar.bz2 +b6e5b83adbc9ed543c697149757a5545 gimp-2.6.8-4-automake.patch.bz2 From b0ff46e4a6acb0157c578036daa8f0b3dfbe7439 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Thu, 24 Jun 2010 10:42:36 +0000 Subject: [PATCH 06/14] version 2.6.9 remove obsolete gtk219, never-stack-trace-desktop, indexed-pnm patches don't manually provide "gimp-libs%{?_isa}" in gimp-libs don't package %{_datadir}/gtk-doc/html, but dirs beneath get rid of obsolete gimp-plugin-mgr --- .cvsignore | 4 +- gimp-2.6.8-gtk219.patch | 79 --------------- gimp-2.6.8-indexed-pnm.patch | 54 ----------- gimp-2.6.8-never-stack-trace-desktop.patch | 32 ------ gimp-plugin-mgr.in | 79 --------------- gimp.spec | 107 ++++++++++++--------- import.log | 1 + sources | 4 +- 8 files changed, 68 insertions(+), 292 deletions(-) delete mode 100644 gimp-2.6.8-gtk219.patch delete mode 100644 gimp-2.6.8-indexed-pnm.patch delete mode 100644 gimp-2.6.8-never-stack-trace-desktop.patch delete mode 100644 gimp-plugin-mgr.in create mode 100644 import.log diff --git a/.cvsignore b/.cvsignore index f67a080..8e12043 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ -gimp-2.6.8.tar.bz2 -gimp-2.6.8-4-automake.patch.bz2 +gimp-2.6.9-1-automake.patch.bz2 +gimp-2.6.9.tar.bz2 diff --git a/gimp-2.6.8-gtk219.patch b/gimp-2.6.8-gtk219.patch deleted file mode 100644 index c99d261..0000000 --- a/gimp-2.6.8-gtk219.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 59f3ad346b22c85618b0c7cffcce4d1c816ca3b6 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Wed, 24 Mar 2010 18:08:01 +0100 -Subject: [PATCH] patch: gtk219 - -Squashed commit of the following: - -commit 726878e604e663488757a3220246c2054f54b843 -Author: Nils Philippsen -Date: Wed Mar 24 15:43:10 2010 +0100 - - backport statusbar code needed for GTK+ >= 2.19.1 - - Use the hbox that is provided via gtk_statusbar_get_message_area() - since GTK+ 2.19.1. ---- - app/display/gimpstatusbar.c | 32 +++++++++++++++++++++++++------- - 1 files changed, 25 insertions(+), 7 deletions(-) - -diff --git a/app/display/gimpstatusbar.c b/app/display/gimpstatusbar.c -index 5e89427..36651cd 100644 ---- a/app/display/gimpstatusbar.c -+++ b/app/display/gimpstatusbar.c -@@ -49,6 +49,9 @@ - /* maximal width of the string holding the cursor-coordinates */ - #define CURSOR_LEN 256 - -+/* the spacing of the hbox */ -+#define HBOX_SPACING 1 -+ - /* spacing between the icon and the statusbar label */ - #define ICON_SPACING 2 - -@@ -152,6 +155,7 @@ static void - gimp_statusbar_init (GimpStatusbar *statusbar) - { - GtkWidget *hbox; -+ GtkWidget *label; - GtkWidget *image; - GimpUnitStore *store; - -@@ -171,13 +175,27 @@ gimp_statusbar_init (GimpStatusbar *statusbar) - statusbar->progress_active = FALSE; - statusbar->progress_shown = FALSE; - -- /* remove the label and insert a hbox */ -- gtk_container_remove (GTK_CONTAINER (GTK_STATUSBAR (statusbar)->frame), -- g_object_ref (GTK_STATUSBAR (statusbar)->label)); -- -- hbox = gtk_hbox_new (FALSE, 1); -- gtk_container_add (GTK_CONTAINER (GTK_STATUSBAR (statusbar)->frame), hbox); -- gtk_widget_show (hbox); -+ label = g_object_ref (GTK_STATUSBAR (statusbar)->label); -+ -+ /* remove the message area or label and insert a hbox */ -+#if GTK_CHECK_VERSION (2, 19, 1) -+ { -+ hbox = gtk_statusbar_get_message_area (GTK_STATUSBAR (statusbar)); -+ gtk_box_set_spacing (GTK_BOX (hbox), HBOX_SPACING); -+ gtk_container_remove (GTK_CONTAINER (hbox), label); -+ } -+#else -+ { -+ GtkWidget *label_parent; -+ -+ label_parent = gtk_widget_get_parent (label); -+ gtk_container_remove (GTK_CONTAINER (label_parent), label); -+ -+ hbox = gtk_hbox_new (FALSE, HBOX_SPACING); -+ gtk_container_add (GTK_CONTAINER (label_parent), hbox); -+ gtk_widget_show (hbox); -+ } -+#endif - - statusbar->cursor_label = gtk_label_new ("8888, 8888"); - gtk_misc_set_alignment (GTK_MISC (statusbar->cursor_label), 0.5, 0.5); --- -1.6.6.1 - diff --git a/gimp-2.6.8-indexed-pnm.patch b/gimp-2.6.8-indexed-pnm.patch deleted file mode 100644 index 9cc983e..0000000 --- a/gimp-2.6.8-indexed-pnm.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 2bb143afdefb20b51ed6643f84e4862482d0e7dc Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Fri, 18 Jun 2010 16:20:51 +0200 -Subject: [PATCH] patch: indexed-pnm - -Squashed commit of the following: - -commit 83e5714e44d4c14ff162de2450a311dcbeb10ce7 -Author: Sven Neumann -Date: Sat Jan 9 12:12:12 2010 +0100 - - Bug 606372 - Saving to .ppm fails on indexed colorspace - - Don't change the pointer to the colormap and then attempt to free it. - (cherry picked from commit b883d59411dfde28fb0704fa2790e602999f7f6f) ---- - plug-ins/common/file-pnm.c | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -diff --git a/plug-ins/common/file-pnm.c b/plug-ins/common/file-pnm.c -index 2cd8443..8359f0a 100644 ---- a/plug-ins/common/file-pnm.c -+++ b/plug-ins/common/file-pnm.c -@@ -1103,13 +1103,14 @@ save_image (const gchar *filename, - } - else - { -- gint i; -+ const guchar *c = cmap; -+ gint i; - - for (i = 0; i < num_colors; i++) - { -- red[i] = *cmap++; -- grn[i] = *cmap++; -- blu[i] = *cmap++; -+ red[i] = *c++; -+ grn[i] = *c++; -+ blu[i] = *c++; - } - - rowinfo.red = red; -@@ -1155,7 +1156,7 @@ save_image (const gchar *filename, - d = data; - } - -- (*saverow)(&rowinfo, d); -+ saverow (&rowinfo, d); - d += xres * (np ? np : 1); - - if ((ypos % 20) == 0) --- -1.7.0.1 - diff --git a/gimp-2.6.8-never-stack-trace-desktop.patch b/gimp-2.6.8-never-stack-trace-desktop.patch deleted file mode 100644 index d342992..0000000 --- a/gimp-2.6.8-never-stack-trace-desktop.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 0939c40c21d6750e5d65f2c2b34bf8caaad263f5 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Mon, 19 Apr 2010 18:05:41 +0200 -Subject: [PATCH] patch: never-stack-trace-desktop - -Squashed commit of the following: - -commit 9cb13a72dea56cc16d92b2c71ae16803d229b4ec -Author: Nils Philippsen -Date: Mon Apr 19 18:04:19 2010 +0200 - - add --stack-trace-mode=never to desktop file ---- - desktop/gimp.desktop.in.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/desktop/gimp.desktop.in.in b/desktop/gimp.desktop.in.in -index 776e4ee..639e987 100644 ---- a/desktop/gimp.desktop.in.in -+++ b/desktop/gimp.desktop.in.in -@@ -4,7 +4,7 @@ Type=Application - _Name=GNU Image Manipulation Program - _GenericName=Image Editor - _Comment=Create images and edit photographs --Exec=@GIMP_COMMAND@ %U -+Exec=@GIMP_COMMAND@ --stack-trace-mode=never %U - TryExec=gimp-@GIMP_APP_VERSION@ - Icon=gimp - Terminal=false --- -1.6.6.1 - diff --git a/gimp-plugin-mgr.in b/gimp-plugin-mgr.in deleted file mode 100644 index 3b096b1..0000000 --- a/gimp-plugin-mgr.in +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash - -shopt -s nullglob - -GIMPPLUGINDIR="@GIMPPLUGINDIR@" -EXITVAL=0 - -showhelp () { - cat << EOF -Usage: gimp-plugin-mgr [ [ [...]] -Mode can be: ---install|-i: install plugin(s) ---uninstall|-u: uninstall plugin(s) ---help|-h: show this message -EOF -} - -install_uninstall () { - local action="$1" - shift - local plugins="$@" - pushd "$GIMPPLUGINDIR/plug-ins" >&/dev/null - if [ "$plugins" == "*" ]; then - pushd "/etc/gimp/plugins.d" >&/dev/null - plugins="" - for file in *; do - plugins="$plugins ${file%.conf}" - done - popd >&/dev/null - fi - - for plugin in $plugins; do - PLUGINFILE= - if [ ! -r "/etc/gimp/plugins.d/${plugin}.conf" ]; then - echo "gimp-plugin-mgr: can't read /etc/gimp/plugins.d/${plugin}.conf" >&2 - EXITVAL=$(( $EXITVAL + 1 )) - continue - fi - . "/etc/gimp/plugins.d/${plugin}.conf" - case "$action" in - install) - if [ ! "$PLUGINFILE" ]; then - echo "gimp-plugin-mgr: PLUGINFILE not defined for $plugin" >&2 - EXITVAL=$(( $EXITVAL + 1 )) - continue - fi - ln -snf "$PLUGINFILE" "$GIMPPLUGINDIR/plug-ins/$plugin" - ;; - uninstall) - if [ ! -L "$GIMPPLUGINDIR/plug-ins/$plugin" ]; then - echo "gimp-plugin-mgr: $GIMPPLUGINDIR/plug-ins/$plugin not a symbolic link" >&2 - EXITVAL=$(( $EXITVAL + 1 )) - continue - fi - rm -f "$plugin" - ;; - esac - done - popd >&/dev/null -} - -case "$1" in ---install|-i) - shift - install_uninstall install "$@" - ;; ---uninstall|-u) - shift - install_uninstall uninstall "$@" - ;; -*) - if [ "$1" != "--help" -a "$1" != "-h" ]; then - EXITVAL=1 - fi - showhelp - ;; -esac - -exit $EXITVAL diff --git a/gimp.spec b/gimp.spec index ec09b87..7e881b6 100644 --- a/gimp.spec +++ b/gimp.spec @@ -30,8 +30,8 @@ Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 -Version: 2.6.8 -Release: 8%{?dist} +Version: 2.6.9 +Release: 1%{?dist} %define binver 2.6 %define gimp_lang_ver 20 %define interfacever 2.0 @@ -117,7 +117,6 @@ Requires: xdg-utils Requires: gimp-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Source0: ftp://ftp.gimp.org/pub/gimp/v%{binver}/gimp-%{version}.tar.bz2 -Source1: gimp-plugin-mgr.in # distro specific: use xdg-open instead of firefox as web browser Patch0: gimp-2.6.2-xdg-open.patch # https://bugzilla.gnome.org/show_bug.cgi?id=559081 @@ -128,14 +127,8 @@ Patch1: gimp-2.6.7-jpeg-units.patch Patch2: gimp-2.6.6-minimize-dialogs.patch # backport: fix building with "gold" linker Patch3: gimp-2.6.8-gold.patch -# backport: statusbar code needed for GTK+ >= 2.19.1 (#559726) -Patch4: gimp-2.6.8-gtk219.patch -# distro-specific: add --stack-trace-mode=never to desktop file -Patch5: gimp-2.6.8-never-stack-trace-desktop.patch -# backport: fix saving indexed PNM files (#605615) -Patch6: gimp-2.6.8-indexed-pnm.patch # Makefile.in files generated by Makefile.am changed in patches -Patch10: gimp-2.6.8-4-automake.patch.bz2 +Patch10: gimp-2.6.9-1-automake.patch.bz2 %description GIMP (GNU Image Manipulation Program) is a powerful image composition and @@ -150,7 +143,6 @@ with multi-level undo. Summary: GIMP libraries Group: System Environment/Libraries License: LGPLv2+ -Provides: gimp-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} %description libs The gimp-libs package contains shared libraries needed for the GNU Image @@ -219,16 +211,9 @@ EOF %patch1 -p1 -b .jpeg-units %patch2 -p1 -b .minimize-dialogs %patch3 -p1 -b .gold -%patch4 -p1 -b .gtk219 -%patch5 -p1 -b .never-stack-trace-desktop -%patch6 -p1 -b .indexed-pnm %patch10 -p1 -b .automake %build -# if [ ! -f configure ]; then -# ./autogen.sh --quiet $MYARCH_FLAGS --prefix=%{_prefix} -# fi - # Use PIC/PIE because gimp is likely to deal with files coming from untrusted # sources CFLAGS='-fPIC %optflags -fno-strict-aliasing' @@ -276,9 +261,6 @@ LDFLAGS='-pie' make %{?_smp_mflags} -# convenience stuff for external plugins (e.g. xsane) -sed -e 's|@GIMPPLUGINDIR@|%{_libdir}/gimp/%{interfacever}|g' < %{SOURCE1} > gimp-plugin-mgr - %install rm -rf %{buildroot} @@ -342,35 +324,15 @@ ln -snf gimptool-%{interfacever}.1 %{buildroot}%{_mandir}/man1/gimptool.1 ln -snf gimprc-%{binver}.5 %{buildroot}/%{_mandir}/man5/gimprc.5 %endif -# convenience stuff for external plugins (e.g. xsane) -mkdir -p %{buildroot}%{_sysconfdir}/gimp/plugins.d -mkdir -p %{buildroot}%{_sbindir} -install -m 0755 gimp-plugin-mgr %{buildroot}%{_sbindir}/gimp-plugin-mgr - %clean rm -rf %{buildroot} -%pre -# First, remove old symlinks which are possibly in an old location (before a -# major version update) -if [ -x "%{_sbindir}/gimp-plugin-mgr" ]; then - %{_sbindir}/gimp-plugin-mgr --uninstall '*' || : -fi - %post /usr/bin/update-desktop-database %{_datadir}/applications &> /dev/null || : touch --no-create %{_datadir}/icons/hicolor if [ -x %{_bindir}/gtk-update-icon-cache ]; then %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : fi -# Then re-add the symlinks -%{_sbindir}/gimp-plugin-mgr --install '*' || : - -%preun -# Only delete symlinks when uninstalling -if [ "$1" = "0" ]; then - %{_sbindir}/gimp-plugin-mgr --uninstall '*' || : -fi %postun if [ "$1" = "0" ]; then @@ -419,7 +381,6 @@ fi %{_datadir}/gimp/%{interfacever}/themes/ %dir %{_sysconfdir}/gimp -%dir %{_sysconfdir}/gimp/plugins.d %dir %{_sysconfdir}/gimp/%{interfacever} %config(noreplace) %{_sysconfdir}/gimp/%{interfacever}/controllerrc %config(noreplace) %{_sysconfdir}/gimp/%{interfacever}/gimprc @@ -433,7 +394,6 @@ fi %{_bindir}/gimp-%{binver} %{_bindir}/gimp-remote-%{binver} %{_bindir}/gimp-console-%{binver} -%{_sbindir}/gimp-plugin-mgr %if %{with convenience} %{_bindir}/gimp @@ -484,7 +444,7 @@ fi %endif %defattr (-, root, root, 0755) %doc HACKING README.i18n -%doc %{_datadir}/gtk-doc/* +%doc %{_datadir}/gtk-doc/html/*/ %{_libdir}/*.so %dir %{_libdir}/gimp @@ -513,6 +473,65 @@ fi %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser %changelog +* Wed Jun 23 2010 Nils Philippsen - 2:2.6.9-1 +- version 2.6.9 + + Overview of Changes from GIMP 2.6.8 to GIMP 2.6.9 + ================================================= + + * Bugs fixed: + + 612618 - Font selection remains visible + 622234 - gimp.desktop: image/x-psd in MimeTypes twice + 622196 - Unportable test(1) construct in configure script + 620604 - Description of "histogram" procedure is slightly inaccurate + 541586 - Tool options not saved/loaded correctly? + 614153 - Importing PDF files with long titles + 600112 - blur-gauss-selective.exe crashes + 599233 - Dialog of "Save as BMP" ignores changes which are not made + with a mous + 565001 - Text-Tool crashes when edit a 2.4.2 version xcf + 610478 - Layer preview suddenly stops getting updated + 609026 - leaks shared memory + 609056 - Exporting to Alias PIX format fails + 608188 - a few strings in Save as... > Raw image data dialog are always + in English + 604820 - GEGL Operation "path" crashes GIMP + 603711 - Crashes when using path tool + 607242 - GIMP 2.7.0 fails to build against libpng 1.4.0 + 606372 - Saving to .ppm fails on indexed colorspace + 605237 - the "Antialiasing..." message in the progress bar does not show + translated + 604508 - gimp-layer-new-from-visible should work from updated projection + + * Updated and new translations: + + Asturian (ast) + Basque (eu) + Burmese (my) + Catalan (ca) + Chinese (Hong Kong) (zh_HK) + Chinese (Taiwan) (zh_HK) + German (de) + Italian (it) + Latvian (lv) + Low German (nds) + Romanian (ro) + Simplified Chinese (zh_CN) + Slovenian (sl) + Ukrainian (uk) + Valencian (ca@valencia) + +- remove obsolete gtk219, never-stack-trace-desktop, indexed-pnm patches +- don't manually provide "gimp-libs%%{?_isa}" in gimp-libs +- don't package %%{_datadir}/gtk-doc/html, but dirs beneath + +* Wed Jun 23 2010 Nils Philippsen - 2:2.6.8-10 +- get rid of obsolete gimp-plugin-mgr + +* Tue Jun 22 2010 Matthias Clasen - 2:2.6.8-9 +- Rebuild against new poppler + * Fri Jun 18 2010 Nils Philippsen - 2:2.6.8-8 - backport fix for saving indexed PNM files (#605615) diff --git a/import.log b/import.log new file mode 100644 index 0000000..6850c11 --- /dev/null +++ b/import.log @@ -0,0 +1 @@ +gimp-2_6_9-1_fc14:F-12:gimp-2.6.9-1.fc14.src.rpm:1277375050 diff --git a/sources b/sources index 4304f9d..53d2650 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -a4d9462c9420954824a80c9b1963f9d9 gimp-2.6.8.tar.bz2 -b6e5b83adbc9ed543c697149757a5545 gimp-2.6.8-4-automake.patch.bz2 +8bd70b4fb59eb79d0009e633db9e5098 gimp-2.6.9-1-automake.patch.bz2 +e5d0cc6f3ce127e51d7f3d3124b16a99 gimp-2.6.9.tar.bz2 From c73c9be9d5c64b5ac18318ec148f1956ead4de68 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Fri, 25 Jun 2010 11:59:21 +0000 Subject: [PATCH 07/14] fix clicking scroll bar buttons from combo boxes --- gimp-2.6.9-combo-popup.patch | 44 ++++++++++++++++++++++++++++++++++++ gimp.spec | 8 ++++++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 gimp-2.6.9-combo-popup.patch diff --git a/gimp-2.6.9-combo-popup.patch b/gimp-2.6.9-combo-popup.patch new file mode 100644 index 0000000..b637865 --- /dev/null +++ b/gimp-2.6.9-combo-popup.patch @@ -0,0 +1,44 @@ +From ac799274bd9ac1f3cb24624853ad35ee5b860f62 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Fri, 25 Jun 2010 13:53:04 +0200 +Subject: [PATCH] patch: combo-popup + +Squashed commit of the following: + +commit 0d1a4fd3c9bdf86ab71951c63bdf6915b8befd05 +Author: Michael Natterer +Date: Thu Jun 24 21:56:41 2010 +0200 + + Bug 622608 - GIMP crashes when clicking any scroll bar from combo boxes + + Don't cancel the popup in grab_notify() if the popup's grab was + shadowed by one of the widgets in the popup, like the scrollbar. + (cherry picked from commit 991210c0f94ed8e88eab7ebf19438bad85931930) +--- + app/widgets/gimpcontainerpopup.c | 10 ++++++++-- + 1 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/app/widgets/gimpcontainerpopup.c b/app/widgets/gimpcontainerpopup.c +index 50624cc..40cdfce 100644 +--- a/app/widgets/gimpcontainerpopup.c ++++ b/app/widgets/gimpcontainerpopup.c +@@ -181,8 +181,14 @@ static void + gimp_container_popup_grab_notify (GtkWidget *widget, + gboolean was_grabbed) + { +- if (! was_grabbed) +- g_signal_emit (widget, popup_signals[CANCEL], 0); ++ if (was_grabbed) ++ return; ++ ++ /* ignore grabs on one of our children, like the scrollbar */ ++ if (gtk_widget_is_ancestor (gtk_grab_get_current (), widget)) ++ return; ++ ++ g_signal_emit (widget, popup_signals[CANCEL], 0); + } + + static gboolean +-- +1.7.0.1 + diff --git a/gimp.spec b/gimp.spec index 7e881b6..4a490de 100644 --- a/gimp.spec +++ b/gimp.spec @@ -31,7 +31,7 @@ Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 Version: 2.6.9 -Release: 1%{?dist} +Release: 2%{?dist} %define binver 2.6 %define gimp_lang_ver 20 %define interfacever 2.0 @@ -127,6 +127,8 @@ Patch1: gimp-2.6.7-jpeg-units.patch Patch2: gimp-2.6.6-minimize-dialogs.patch # backport: fix building with "gold" linker Patch3: gimp-2.6.8-gold.patch +# backport: GIMP crashes when clicking any scroll bar from combo boxes +Patch4: gimp-2.6.9-combo-popup.patch # Makefile.in files generated by Makefile.am changed in patches Patch10: gimp-2.6.9-1-automake.patch.bz2 @@ -211,6 +213,7 @@ EOF %patch1 -p1 -b .jpeg-units %patch2 -p1 -b .minimize-dialogs %patch3 -p1 -b .gold +%patch4 -p1 -b .combo-popup %patch10 -p1 -b .automake %build @@ -473,6 +476,9 @@ fi %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser %changelog +* Fri Jun 25 2010 Nils Philippsen - 2:2.6.9-2 +- fix clicking scroll bar buttons from combo boxes + * Wed Jun 23 2010 Nils Philippsen - 2:2.6.9-1 - version 2.6.9 From bdc79ecbafdd2b71104750bcc120d881830594c3 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Mon, 28 Jun 2010 16:05:21 +0000 Subject: [PATCH 08/14] script-fu: make logging IPv6-aware (#198367) --- .cvsignore | 2 +- gimp-2.6.9-script-fu-ipv6.patch | 103 ++++++++++++++++++++++++++++++++ gimp.spec | 16 +++-- sources | 2 +- 4 files changed, 117 insertions(+), 6 deletions(-) create mode 100644 gimp-2.6.9-script-fu-ipv6.patch diff --git a/.cvsignore b/.cvsignore index 8e12043..4be66cb 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ -gimp-2.6.9-1-automake.patch.bz2 gimp-2.6.9.tar.bz2 +gimp-2.6.9-3-autoreconf.patch.bz2 diff --git a/gimp-2.6.9-script-fu-ipv6.patch b/gimp-2.6.9-script-fu-ipv6.patch new file mode 100644 index 0000000..a1341d3 --- /dev/null +++ b/gimp-2.6.9-script-fu-ipv6.patch @@ -0,0 +1,103 @@ +commit 859c381a9764d9d91e1ed8539a5919afbbbf2dbc +Author: Nils Philippsen +Date: Mon Jun 28 16:36:44 2010 +0200 + + patch: script-fu-ipv6 + + Squashed commit of the following: + + commit e567516ade8ebf74598542f8b319f80eee873c65 + Author: Nils Philippsen + Date: Mon Jun 28 16:07:01 2010 +0200 + + Bug 623045 - script-fu: make logging IPv6-aware + + use getnameinfo() instead of inet_ntoa() + +diff --git a/configure.in b/configure.in +index 71f031d..a99cbe4 100644 +--- a/configure.in ++++ b/configure.in +@@ -602,14 +602,14 @@ AC_CHECK_FUNC(rint, AC_DEFINE(HAVE_RINT, 1, + AC_DEFINE(HAVE_RINT)])]) + + +-###################################################### +-# Check for extra libs needed for inet_ntoa and socket +-###################################################### ++######################################################## ++# Check for extra libs needed for getnameinfo and socket ++######################################################## + + gimp_save_LIBS=$LIBS + LIBS="" + +-AC_CHECK_FUNCS(inet_ntoa, , AC_CHECK_LIB(nsl, inet_ntoa)) ++AC_CHECK_FUNCS(getnameinfo, , AC_CHECK_LIB(nsl, getnameinfo)) + AC_CHECK_LIB(socket, socket) + + SOCKET_LIBS="$LIBS" +diff --git a/plug-ins/script-fu/script-fu-server.c b/plug-ins/script-fu/script-fu-server.c +index db1de13..8fb8a10 100644 +--- a/plug-ins/script-fu/script-fu-server.c ++++ b/plug-ins/script-fu/script-fu-server.c +@@ -310,12 +310,16 @@ script_fu_server_listen (gint timeout) + /* Service the server socket if it has input pending. */ + if (FD_ISSET (server_sock, &fds)) + { +- struct sockaddr_in clientname; ++ struct sockaddr_storage client; ++ struct sockaddr_in *client_in; ++ struct sockaddr_in6 *client_in6; ++ gchar clientname[NI_MAXHOST]; + + /* Connection request on original socket. */ +- guint size = sizeof (clientname); ++ guint size = sizeof (client); + gint new = accept (server_sock, +- (struct sockaddr *) &clientname, &size); ++ (struct sockaddr *) &client, &size); ++ guint portno; + + if (new < 0) + { +@@ -324,13 +328,34 @@ script_fu_server_listen (gint timeout) + } + + /* Associate the client address with the socket */ +- g_hash_table_insert (clients, +- GINT_TO_POINTER (new), +- g_strdup (inet_ntoa (clientname.sin_addr))); ++ ++ /* If all else fails ... */ ++ strncpy (clientname, "(error during host address lookup)", NI_MAXHOST-1); ++ ++ /* Lookup address */ ++ (void) getnameinfo ((struct sockaddr *) &client, size, clientname, ++ sizeof (clientname), NULL, 0, NI_NUMERICHOST); ++ ++ /* Determine port number */ ++ switch (client.ss_family) ++ { ++ case AF_INET: ++ client_in = (struct sockaddr_in *) &client; ++ portno = (guint) g_ntohs (client_in->sin_port); ++ break; ++ case AF_INET6: ++ client_in6 = (struct sockaddr_in6 *) &client; ++ portno = (guint) g_ntohs (client_in6->sin6_port); ++ break; ++ default: ++ portno = 0; ++ } ++ ++ g_hash_table_insert (clients, GINT_TO_POINTER (new), ++ g_strdup (clientname)); + + server_log ("Server: connect from host %s, port %d.\n", +- inet_ntoa (clientname.sin_addr), +- (unsigned int) ntohs (clientname.sin_port)); ++ clientname, portno); + } + + /* Service the client sockets. */ diff --git a/gimp.spec b/gimp.spec index 4a490de..d7fd78e 100644 --- a/gimp.spec +++ b/gimp.spec @@ -31,7 +31,7 @@ Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 Version: 2.6.9 -Release: 2%{?dist} +Release: 3%{?dist} %define binver 2.6 %define gimp_lang_ver 20 %define interfacever 2.0 @@ -129,8 +129,12 @@ Patch2: gimp-2.6.6-minimize-dialogs.patch Patch3: gimp-2.6.8-gold.patch # backport: GIMP crashes when clicking any scroll bar from combo boxes Patch4: gimp-2.6.9-combo-popup.patch -# Makefile.in files generated by Makefile.am changed in patches -Patch10: gimp-2.6.9-1-automake.patch.bz2 +# https://bugzilla.redhat.com/show_bug.cgi?id=198367 +# https://bugzilla.gnome.org/show_bug.cgi?id=623045 +# make script-fu logging IPv6 aware +Patch5: gimp-2.6.9-script-fu-ipv6.patch +# files changed by autoreconf after applying the above +Patch10: gimp-2.6.9-3-autoreconf.patch %description GIMP (GNU Image Manipulation Program) is a powerful image composition and @@ -214,7 +218,8 @@ EOF %patch2 -p1 -b .minimize-dialogs %patch3 -p1 -b .gold %patch4 -p1 -b .combo-popup -%patch10 -p1 -b .automake +%patch5 -p1 -b .script-fu-ipv6 +%patch10 -p1 -b .autoreconf %build # Use PIC/PIE because gimp is likely to deal with files coming from untrusted @@ -476,6 +481,9 @@ fi %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser %changelog +* Mon Jun 28 2010 Nils Philippsen - 2:2.6.9-3 +- script-fu: make logging IPv6-aware (#198367) + * Fri Jun 25 2010 Nils Philippsen - 2:2.6.9-2 - fix clicking scroll bar buttons from combo boxes diff --git a/sources b/sources index 53d2650..57cc4c0 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -8bd70b4fb59eb79d0009e633db9e5098 gimp-2.6.9-1-automake.patch.bz2 e5d0cc6f3ce127e51d7f3d3124b16a99 gimp-2.6.9.tar.bz2 +c9f1878af298871e0b0088583cc4ce13 gimp-2.6.9-3-autoreconf.patch.bz2 From e3966ee6b094322d05b6e07bc565bfa40dd12baa Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Mon, 28 Jun 2010 16:08:47 +0000 Subject: [PATCH 09/14] fix patch file name --- gimp.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gimp.spec b/gimp.spec index d7fd78e..70486ca 100644 --- a/gimp.spec +++ b/gimp.spec @@ -132,7 +132,7 @@ Patch4: gimp-2.6.9-combo-popup.patch # https://bugzilla.redhat.com/show_bug.cgi?id=198367 # https://bugzilla.gnome.org/show_bug.cgi?id=623045 # make script-fu logging IPv6 aware -Patch5: gimp-2.6.9-script-fu-ipv6.patch +Patch5: gimp-2.6.9-script-fu-ipv6.patch.bz2 # files changed by autoreconf after applying the above Patch10: gimp-2.6.9-3-autoreconf.patch From dd8a02e91f6ba42fce82f9e8771baa0de2b2b869 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Mon, 28 Jun 2010 16:14:07 +0000 Subject: [PATCH 10/14] fix the right patch file name --- gimp.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gimp.spec b/gimp.spec index 70486ca..6393779 100644 --- a/gimp.spec +++ b/gimp.spec @@ -132,9 +132,9 @@ Patch4: gimp-2.6.9-combo-popup.patch # https://bugzilla.redhat.com/show_bug.cgi?id=198367 # https://bugzilla.gnome.org/show_bug.cgi?id=623045 # make script-fu logging IPv6 aware -Patch5: gimp-2.6.9-script-fu-ipv6.patch.bz2 +Patch5: gimp-2.6.9-script-fu-ipv6.patch # files changed by autoreconf after applying the above -Patch10: gimp-2.6.9-3-autoreconf.patch +Patch10: gimp-2.6.9-3-autoreconf.patch.bz2 %description GIMP (GNU Image Manipulation Program) is a powerful image composition and From b14fd600ae6e69a98572204c7092213e736f26e3 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Tue, 29 Jun 2010 14:13:08 +0000 Subject: [PATCH 11/14] script-fu: make rest of server IPv6-aware (#198367) --- gimp-2.6.9-script-fu-ipv6.patch | 337 +++++++++++++++++++++++++++++--- gimp.spec | 5 +- 2 files changed, 315 insertions(+), 27 deletions(-) diff --git a/gimp-2.6.9-script-fu-ipv6.patch b/gimp-2.6.9-script-fu-ipv6.patch index a1341d3..e45e139 100644 --- a/gimp-2.6.9-script-fu-ipv6.patch +++ b/gimp-2.6.9-script-fu-ipv6.patch @@ -1,18 +1,24 @@ -commit 859c381a9764d9d91e1ed8539a5919afbbbf2dbc -Author: Nils Philippsen -Date: Mon Jun 28 16:36:44 2010 +0200 +From 1979c0b0e66db34e69863c89e4eb544c89e9d41a Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Tue, 29 Jun 2010 16:06:45 +0200 +Subject: [PATCH] patch: script-fu-ipv6 - patch: script-fu-ipv6 - - Squashed commit of the following: - - commit e567516ade8ebf74598542f8b319f80eee873c65 - Author: Nils Philippsen - Date: Mon Jun 28 16:07:01 2010 +0200 - - Bug 623045 - script-fu: make logging IPv6-aware - - use getnameinfo() instead of inet_ntoa() +Squashed commit of the following: + +commit e0ae4b85c33d4241e95594b0d9788dafb27132c6 +Author: Nils Philippsen +Date: Tue Jun 29 16:03:31 2010 +0200 + + Bug 623045 - script-fu: make server IPv6 aware + + use getnameinfo() instead of inet_ntoa() + use two sockets for IPv4, IPv6 + (manually cherry picked from commit 04538534fc581de0507ef2ec1148853ff1e96dbe) +--- + configure.in | 8 +- + plug-ins/script-fu/script-fu-server.c | 141 +++++++++++++++++++++++++------- + plug-ins/script-fu/servertest.py | 76 ++++++++++++------ + 3 files changed, 166 insertions(+), 59 deletions(-) diff --git a/configure.in b/configure.in index 71f031d..a99cbe4 100644 @@ -38,12 +44,59 @@ index 71f031d..a99cbe4 100644 SOCKET_LIBS="$LIBS" diff --git a/plug-ins/script-fu/script-fu-server.c b/plug-ins/script-fu/script-fu-server.c -index db1de13..8fb8a10 100644 +index db1de13..c4776a2 100644 --- a/plug-ins/script-fu/script-fu-server.c +++ b/plug-ins/script-fu/script-fu-server.c -@@ -310,12 +310,16 @@ script_fu_server_listen (gint timeout) - /* Service the server socket if it has input pending. */ - if (FD_ISSET (server_sock, &fds)) +@@ -137,7 +137,8 @@ static void server_start (gint port, + const gchar *logfile); + static gboolean execute_command (SFCommand *cmd); + static gint read_from_client (gint filedes); +-static gint make_socket (guint port); ++static gint make_socket (const struct addrinfo ++ *ai); + static void server_log (const gchar *format, + ...) G_GNUC_PRINTF (1, 2); + static void server_quit (void); +@@ -151,7 +152,10 @@ static void print_socket_api_error (const gchar *api_name); + /* + * Local variables + */ +-static gint server_sock; ++static gint server_socks[2], ++ server_socks_used = 0; ++static const gint server_socks_len = sizeof (server_socks) / ++ sizeof (server_socks[0]); + static GList *command_queue = NULL; + static gint queue_length = 0; + static gint request_no = 0; +@@ -285,6 +289,7 @@ script_fu_server_listen (gint timeout) + struct timeval tv; + struct timeval *tvp = NULL; + SELECT_MASK fds; ++ gint sockno; + + /* Set time struct */ + if (timeout) +@@ -295,7 +300,10 @@ script_fu_server_listen (gint timeout) + } + + FD_ZERO (&fds); +- FD_SET (server_sock, &fds); ++ for (sockno = 0; sockno < server_socks_used; sockno++) ++ { ++ FD_SET (server_socks[sockno], &fds); ++ } + g_hash_table_foreach (clients, script_fu_server_add_fd, &fds); + + /* Block until input arrives on one or more active sockets +@@ -307,15 +315,25 @@ script_fu_server_listen (gint timeout) + return; + } + +- /* Service the server socket if it has input pending. */ +- if (FD_ISSET (server_sock, &fds)) ++ /* Service the server sockets if any has input pending. */ ++ for (sockno = 0; sockno < server_socks_used; sockno++) { - struct sockaddr_in clientname; + struct sockaddr_storage client; @@ -53,15 +106,22 @@ index db1de13..8fb8a10 100644 /* Connection request on original socket. */ - guint size = sizeof (clientname); -+ guint size = sizeof (client); - gint new = accept (server_sock, +- gint new = accept (server_sock, - (struct sockaddr *) &clientname, &size); -+ (struct sockaddr *) &client, &size); -+ guint portno; ++ guint size = sizeof (client); ++ gint new; ++ guint portno; ++ ++ if (! FD_ISSET (server_socks[sockno], &fds)) ++ { ++ continue; ++ } ++ ++ new = accept (server_socks[sockno], (struct sockaddr *) &client, &size); if (new < 0) { -@@ -324,13 +328,34 @@ script_fu_server_listen (gint timeout) +@@ -324,13 +342,34 @@ script_fu_server_listen (gint timeout) } /* Associate the client address with the socket */ @@ -76,6 +136,9 @@ index db1de13..8fb8a10 100644 + (void) getnameinfo ((struct sockaddr *) &client, size, clientname, + sizeof (clientname), NULL, 0, NI_NUMERICHOST); + ++ g_hash_table_insert (clients, GINT_TO_POINTER (new), ++ g_strdup (clientname)); ++ + /* Determine port number */ + switch (client.ss_family) + { @@ -90,9 +153,6 @@ index db1de13..8fb8a10 100644 + default: + portno = 0; + } -+ -+ g_hash_table_insert (clients, GINT_TO_POINTER (new), -+ g_strdup (clientname)); server_log ("Server: connect from host %s, port %d.\n", - inet_ntoa (clientname.sin_addr), @@ -101,3 +161,228 @@ index db1de13..8fb8a10 100644 } /* Service the client sockets. */ +@@ -392,18 +431,46 @@ static void + server_start (gint port, + const gchar *logfile) + { +- const gchar *progress; ++ struct addrinfo *ai, ++ *ai_curr; ++ struct addrinfo hints; ++ gint e, ++ sockno; ++ gchar *port_s; + +- /* First of all, create the socket and set it up to accept connections. */ +- /* This may fail if there's a server running on this port already. */ +- server_sock = make_socket (port); ++ const gchar *progress; + +- if (listen (server_sock, 5) < 0) ++ memset (&hints, 0, sizeof (hints)); ++ hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG; ++ hints.ai_socktype = SOCK_STREAM; ++ ++ port_s = g_strdup_printf ("%d", port); ++ e = getaddrinfo (NULL, port_s, &hints, &ai); ++ g_free (port_s); ++ ++ if (e != 0) + { +- print_socket_api_error ("listen"); ++ g_printerr ("getaddrinfo: %s", gai_strerror (e)); + return; + } + ++ for (ai_curr = ai, sockno = 0; ++ ai_curr != NULL && sockno < server_socks_len; ++ ai_curr = ai_curr->ai_next, sockno++) ++ { ++ /* Create the socket and set it up to accept connections. */ ++ /* This may fail if there's a server running on this port already. */ ++ server_socks[sockno] = make_socket (ai_curr); ++ ++ if (listen (server_socks[sockno], 5) < 0) ++ { ++ print_socket_api_error ("listen"); ++ return; ++ } ++ } ++ ++ server_socks_used = sockno; ++ + /* Setup up the server log file */ + if (logfile && *logfile) + server_log_file = g_fopen (logfile, "a"); +@@ -592,11 +659,10 @@ read_from_client (gint filedes) + } + + static gint +-make_socket (guint port) ++make_socket (const struct addrinfo *ai) + { +- struct sockaddr_in name; +- gint sock; +- gint v = 1; ++ gint sock; ++ gint v = 1; + + /* Win32 needs the winsock library initialized. */ + #ifdef G_OS_WIN32 +@@ -620,7 +686,7 @@ make_socket (guint port) + #endif + + /* Create the socket. */ +- sock = socket (PF_INET, SOCK_STREAM, 0); ++ sock = socket (ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if (sock < 0) + { + print_socket_api_error ("socket"); +@@ -629,12 +695,20 @@ make_socket (guint port) + + setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, &v, sizeof(v)); + +- /* Give the socket a name. */ +- name.sin_family = AF_INET; +- name.sin_port = htons (port); +- name.sin_addr.s_addr = htonl (INADDR_ANY); ++#ifdef IPV6_V6ONLY ++ /* Only listen on IPv6 addresses, otherwise bind() will fail. */ ++ if (ai->ai_family == AF_INET6) ++ { ++ v = 1; ++ if (setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, &v, sizeof(v)) < 0) ++ { ++ print_socket_api_error ("setsockopt"); ++ gimp_quit(); ++ } ++ } ++#endif + +- if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0) ++ if (bind (sock, ai->ai_addr, ai->ai_addrlen) < 0) + { + print_socket_api_error ("bind"); + gimp_quit (); +@@ -672,7 +746,12 @@ script_fu_server_shutdown_fd (gpointer key, + static void + server_quit (void) + { +- CLOSESOCKET (server_sock); ++ gint sockno; ++ ++ for (sockno = 0; sockno < server_socks_used; sockno++) ++ { ++ CLOSESOCKET (server_socks[sockno]); ++ } + + if (clients) + { +diff --git a/plug-ins/script-fu/servertest.py b/plug-ins/script-fu/servertest.py +index b636557..5fb673a 100644 +--- a/plug-ins/script-fu/servertest.py ++++ b/plug-ins/script-fu/servertest.py +@@ -2,38 +2,66 @@ + + import readline, socket, sys + +-if len (sys.argv) == 1: +- HOST = 'localhost' +- PORT = 10008 +-elif len (sys.argv) == 3: +- HOST = sys.argv[1] +- PORT = int (sys.argv[2]) +-else: +- print >> sys.stderr, "Usage: %s " % sys.argv[0] +- print >> sys.stderr, " (if omitted connect to localhost, port 10008)" +- sys.exit () ++if len(sys.argv) < 1 or len(sys.argv) > 3: ++ print >>sys.stderr, "Usage: %s " % sys.argv[0] ++ print >>sys.stderr, " (if omitted connect to localhost, port 10008)" ++ sys.exit(1) + ++HOST = "localhost" ++PORT = 10008 + +-sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM) +-sock.connect ((HOST, PORT)) ++try: ++ HOST = sys.argv[1] ++ try: ++ PORT = int(sys.argv[2]) ++ except IndexError: ++ pass ++except IndexError: ++ pass ++ ++addresses = socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM) ++ ++connected = False ++ ++for addr in addresses: ++ (family, socktype, proto, canonname, sockaddr) = addr ++ ++ numeric_addr = sockaddr[0] ++ ++ if canonname: ++ print "Trying %s ('%s')." % (numeric_addr, canonname) ++ else: ++ print "Trying %s." % numeric_addr ++ ++ try: ++ sock = socket.socket(family, socket.SOCK_STREAM) ++ sock.connect((HOST, PORT)) ++ connected = True ++ break ++ except: ++ pass ++ ++if not connected: ++ print "Failed." ++ sys.exit(1) + + try: +- cmd = raw_input ("Script-Fu-Remote - Testclient\n> ") ++ cmd = raw_input("Script-Fu-Remote - Testclient\n> ") + +- while len (cmd) > 0: +- sock.send ('G%c%c%s' % (len (cmd) / 256, len (cmd) % 256, cmd)) ++ while len(cmd) > 0: ++ sock.send('G%c%c%s' % (len(cmd) / 256, len(cmd) % 256, cmd)) + + data = "" +- while len (data) < 4: +- data += sock.recv (4 - len (data)) ++ while len(data) < 4: ++ data += sock.recv(4 - len(data)) + +- if len (data) >= 4: ++ if len(data) >= 4: + if data[0] == 'G': +- l = ord (data[2]) * 256 + ord (data[3]) ++ l = ord(data[2]) * 256 + ord(data[3]) + msg = "" +- while len (msg) < l: +- msg += sock.recv (l - len (msg)) +- if ord (data[1]): ++ while len(msg) < l: ++ msg += sock.recv(l - len(msg)) ++ if ord(data[1]): + print "(ERR):", msg + else: + print " (OK):", msg +@@ -41,9 +69,9 @@ try: + print "invalid magic: %s\n" % data + else: + print "short response: %s\n" % data +- cmd = raw_input ("> ") ++ cmd = raw_input("> ") + + except EOFError: + print + +-sock.close ++sock.close() +-- +1.7.0.1 + diff --git a/gimp.spec b/gimp.spec index 6393779..354ff23 100644 --- a/gimp.spec +++ b/gimp.spec @@ -31,7 +31,7 @@ Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 Version: 2.6.9 -Release: 3%{?dist} +Release: 4%{?dist} %define binver 2.6 %define gimp_lang_ver 20 %define interfacever 2.0 @@ -481,6 +481,9 @@ fi %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser %changelog +* Tue Jun 29 2010 Nils Philippsen - 2:2.6.9-4 +- script-fu: make rest of server IPv6-aware (#198367) + * Mon Jun 28 2010 Nils Philippsen - 2:2.6.9-3 - script-fu: make logging IPv6-aware (#198367) From 43e180c612cd62e1d52a92aa490018b0935516e8 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Tue, 29 Jun 2010 15:35:33 +0000 Subject: [PATCH 12/14] fix script-fu-ipv6 patch --- gimp-2.6.9-script-fu-ipv6.patch | 167 ++++---------------------------- 1 file changed, 18 insertions(+), 149 deletions(-) diff --git a/gimp-2.6.9-script-fu-ipv6.patch b/gimp-2.6.9-script-fu-ipv6.patch index e45e139..6386414 100644 --- a/gimp-2.6.9-script-fu-ipv6.patch +++ b/gimp-2.6.9-script-fu-ipv6.patch @@ -1,30 +1,7 @@ -From 1979c0b0e66db34e69863c89e4eb544c89e9d41a Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Tue, 29 Jun 2010 16:06:45 +0200 -Subject: [PATCH] patch: script-fu-ipv6 - -Squashed commit of the following: - -commit e0ae4b85c33d4241e95594b0d9788dafb27132c6 -Author: Nils Philippsen -Date: Tue Jun 29 16:03:31 2010 +0200 - - Bug 623045 - script-fu: make server IPv6 aware - - use getnameinfo() instead of inet_ntoa() - use two sockets for IPv4, IPv6 - (manually cherry picked from commit 04538534fc581de0507ef2ec1148853ff1e96dbe) ---- - configure.in | 8 +- - plug-ins/script-fu/script-fu-server.c | 141 +++++++++++++++++++++++++------- - plug-ins/script-fu/servertest.py | 76 ++++++++++++------ - 3 files changed, 166 insertions(+), 59 deletions(-) - -diff --git a/configure.in b/configure.in -index 71f031d..a99cbe4 100644 ---- a/configure.in -+++ b/configure.in -@@ -602,14 +602,14 @@ AC_CHECK_FUNC(rint, AC_DEFINE(HAVE_RINT, 1, +diff -up gimp-2.6.9/configure.in.script-fu-ipv6 gimp-2.6.9/configure.in +--- gimp-2.6.9/configure.in.script-fu-ipv6 2010-06-21 21:20:20.000000000 +0200 ++++ gimp-2.6.9/configure.in 2010-06-29 17:28:24.153566227 +0200 +@@ -602,14 +602,14 @@ AC_CHECK_FUNC(rint, AC_DEFINE(HAVE_RINT, AC_DEFINE(HAVE_RINT)])]) @@ -43,11 +20,10 @@ index 71f031d..a99cbe4 100644 AC_CHECK_LIB(socket, socket) SOCKET_LIBS="$LIBS" -diff --git a/plug-ins/script-fu/script-fu-server.c b/plug-ins/script-fu/script-fu-server.c -index db1de13..c4776a2 100644 ---- a/plug-ins/script-fu/script-fu-server.c -+++ b/plug-ins/script-fu/script-fu-server.c -@@ -137,7 +137,8 @@ static void server_start (gint port, +diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2.6.9/plug-ins/script-fu/script-fu-server.c +--- gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 2009-07-20 22:20:51.000000000 +0200 ++++ gimp-2.6.9/plug-ins/script-fu/script-fu-server.c 2010-06-29 17:28:24.154289648 +0200 +@@ -137,7 +137,8 @@ static void server_start (gin const gchar *logfile); static gboolean execute_command (SFCommand *cmd); static gint read_from_client (gint filedes); @@ -57,7 +33,7 @@ index db1de13..c4776a2 100644 static void server_log (const gchar *format, ...) G_GNUC_PRINTF (1, 2); static void server_quit (void); -@@ -151,7 +152,10 @@ static void print_socket_api_error (const gchar *api_name); +@@ -151,7 +152,10 @@ static void print_socket_api_error /* * Local variables */ @@ -166,19 +142,19 @@ index db1de13..c4776a2 100644 const gchar *logfile) { - const gchar *progress; +- +- /* First of all, create the socket and set it up to accept connections. */ +- /* This may fail if there's a server running on this port already. */ +- server_sock = make_socket (port); + struct addrinfo *ai, + *ai_curr; + struct addrinfo hints; + gint e, + sockno; + gchar *port_s; - -- /* First of all, create the socket and set it up to accept connections. */ -- /* This may fail if there's a server running on this port already. */ -- server_sock = make_socket (port); ++ + const gchar *progress; - -- if (listen (server_sock, 5) < 0) ++ + memset (&hints, 0, sizeof (hints)); + hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG; + hints.ai_socktype = SOCK_STREAM; @@ -186,7 +162,8 @@ index db1de13..c4776a2 100644 + port_s = g_strdup_printf ("%d", port); + e = getaddrinfo (NULL, port_s, &hints, &ai); + g_free (port_s); -+ + +- if (listen (server_sock, 5) < 0) + if (e != 0) { - print_socket_api_error ("listen"); @@ -264,7 +241,7 @@ index db1de13..c4776a2 100644 { print_socket_api_error ("bind"); gimp_quit (); -@@ -672,7 +746,12 @@ script_fu_server_shutdown_fd (gpointer key, +@@ -672,7 +746,12 @@ script_fu_server_shutdown_fd (gpointer k static void server_quit (void) { @@ -278,111 +255,3 @@ index db1de13..c4776a2 100644 if (clients) { -diff --git a/plug-ins/script-fu/servertest.py b/plug-ins/script-fu/servertest.py -index b636557..5fb673a 100644 ---- a/plug-ins/script-fu/servertest.py -+++ b/plug-ins/script-fu/servertest.py -@@ -2,38 +2,66 @@ - - import readline, socket, sys - --if len (sys.argv) == 1: -- HOST = 'localhost' -- PORT = 10008 --elif len (sys.argv) == 3: -- HOST = sys.argv[1] -- PORT = int (sys.argv[2]) --else: -- print >> sys.stderr, "Usage: %s " % sys.argv[0] -- print >> sys.stderr, " (if omitted connect to localhost, port 10008)" -- sys.exit () -+if len(sys.argv) < 1 or len(sys.argv) > 3: -+ print >>sys.stderr, "Usage: %s " % sys.argv[0] -+ print >>sys.stderr, " (if omitted connect to localhost, port 10008)" -+ sys.exit(1) - -+HOST = "localhost" -+PORT = 10008 - --sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM) --sock.connect ((HOST, PORT)) -+try: -+ HOST = sys.argv[1] -+ try: -+ PORT = int(sys.argv[2]) -+ except IndexError: -+ pass -+except IndexError: -+ pass -+ -+addresses = socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM) -+ -+connected = False -+ -+for addr in addresses: -+ (family, socktype, proto, canonname, sockaddr) = addr -+ -+ numeric_addr = sockaddr[0] -+ -+ if canonname: -+ print "Trying %s ('%s')." % (numeric_addr, canonname) -+ else: -+ print "Trying %s." % numeric_addr -+ -+ try: -+ sock = socket.socket(family, socket.SOCK_STREAM) -+ sock.connect((HOST, PORT)) -+ connected = True -+ break -+ except: -+ pass -+ -+if not connected: -+ print "Failed." -+ sys.exit(1) - - try: -- cmd = raw_input ("Script-Fu-Remote - Testclient\n> ") -+ cmd = raw_input("Script-Fu-Remote - Testclient\n> ") - -- while len (cmd) > 0: -- sock.send ('G%c%c%s' % (len (cmd) / 256, len (cmd) % 256, cmd)) -+ while len(cmd) > 0: -+ sock.send('G%c%c%s' % (len(cmd) / 256, len(cmd) % 256, cmd)) - - data = "" -- while len (data) < 4: -- data += sock.recv (4 - len (data)) -+ while len(data) < 4: -+ data += sock.recv(4 - len(data)) - -- if len (data) >= 4: -+ if len(data) >= 4: - if data[0] == 'G': -- l = ord (data[2]) * 256 + ord (data[3]) -+ l = ord(data[2]) * 256 + ord(data[3]) - msg = "" -- while len (msg) < l: -- msg += sock.recv (l - len (msg)) -- if ord (data[1]): -+ while len(msg) < l: -+ msg += sock.recv(l - len(msg)) -+ if ord(data[1]): - print "(ERR):", msg - else: - print " (OK):", msg -@@ -41,9 +69,9 @@ try: - print "invalid magic: %s\n" % data - else: - print "short response: %s\n" % data -- cmd = raw_input ("> ") -+ cmd = raw_input("> ") - - except EOFError: - print - --sock.close -+sock.close() --- -1.7.0.1 - From 396564ed34a17ab6cb39fa1c2348f7c67e3f1c87 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Fri, 9 Jul 2010 12:23:00 +0000 Subject: [PATCH 13/14] version 2.6.10 remove obsolete combo-popup patch update script-fu-ipv6 patch --- .cvsignore | 4 +- ....patch => gimp-2.6.10-script-fu-ipv6.patch | 86 ++++++++++++------- gimp-2.6.9-combo-popup.patch | 44 ---------- gimp.spec | 42 +++++++-- import.log | 1 + sources | 4 +- 6 files changed, 93 insertions(+), 88 deletions(-) rename gimp-2.6.9-script-fu-ipv6.patch => gimp-2.6.10-script-fu-ipv6.patch (74%) delete mode 100644 gimp-2.6.9-combo-popup.patch diff --git a/.cvsignore b/.cvsignore index 4be66cb..f7f1c2f 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ -gimp-2.6.9.tar.bz2 -gimp-2.6.9-3-autoreconf.patch.bz2 +gimp-2.6.10-1-autoreconf.patch.bz2 +gimp-2.6.10.tar.bz2 diff --git a/gimp-2.6.9-script-fu-ipv6.patch b/gimp-2.6.10-script-fu-ipv6.patch similarity index 74% rename from gimp-2.6.9-script-fu-ipv6.patch rename to gimp-2.6.10-script-fu-ipv6.patch index 6386414..856ffa4 100644 --- a/gimp-2.6.9-script-fu-ipv6.patch +++ b/gimp-2.6.10-script-fu-ipv6.patch @@ -1,29 +1,55 @@ -diff -up gimp-2.6.9/configure.in.script-fu-ipv6 gimp-2.6.9/configure.in ---- gimp-2.6.9/configure.in.script-fu-ipv6 2010-06-21 21:20:20.000000000 +0200 -+++ gimp-2.6.9/configure.in 2010-06-29 17:28:24.153566227 +0200 -@@ -602,14 +602,14 @@ AC_CHECK_FUNC(rint, AC_DEFINE(HAVE_RINT, +diff -up gimp-2.6.10/configure.in.script-fu-ipv6 gimp-2.6.10/configure.in +--- gimp-2.6.10/configure.in.script-fu-ipv6 2010-07-03 00:51:55.000000000 +0200 ++++ gimp-2.6.10/configure.in 2010-07-09 13:20:33.499983496 +0200 +@@ -602,14 +602,15 @@ AC_CHECK_FUNC(rint, AC_DEFINE(HAVE_RINT, AC_DEFINE(HAVE_RINT)])]) -###################################################### -# Check for extra libs needed for inet_ntoa and socket -###################################################### -+######################################################## -+# Check for extra libs needed for getnameinfo and socket -+######################################################## ++##################################################################### ++# Check for extra libs needed for getaddrinfo, getnameinfo and socket ++##################################################################### gimp_save_LIBS=$LIBS LIBS="" -AC_CHECK_FUNCS(inet_ntoa, , AC_CHECK_LIB(nsl, inet_ntoa)) ++AC_CHECK_FUNCS(getaddrinfo, , AC_CHECK_LIB(nsl, getaddrinfo)) +AC_CHECK_FUNCS(getnameinfo, , AC_CHECK_LIB(nsl, getnameinfo)) AC_CHECK_LIB(socket, socket) SOCKET_LIBS="$LIBS" -diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2.6.9/plug-ins/script-fu/script-fu-server.c ---- gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 2009-07-20 22:20:51.000000000 +0200 -+++ gimp-2.6.9/plug-ins/script-fu/script-fu-server.c 2010-06-29 17:28:24.154289648 +0200 -@@ -137,7 +137,8 @@ static void server_start (gin +diff -up gimp-2.6.10/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2.6.10/plug-ins/script-fu/script-fu-server.c +--- gimp-2.6.10/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 2010-07-03 00:51:59.000000000 +0200 ++++ gimp-2.6.10/plug-ins/script-fu/script-fu-server.c 2010-07-09 13:20:33.500982656 +0200 +@@ -108,7 +108,7 @@ + #define RSP_LEN_L_BYTE 3 + + /* +- * Local Structures ++ * Local Types + */ + + typedef struct +@@ -129,6 +129,15 @@ typedef struct + gboolean run; + } ServerInterface; + ++typedef union ++{ ++ sa_family_t family; ++ struct sockaddr_storage ss; ++ struct sockaddr sa; ++ struct sockaddr_in sa_in; ++ struct sockaddr_in6 sa_in6; ++} sa_union; ++ + /* + * Local Functions + */ +@@ -137,7 +146,8 @@ static void server_start (gin const gchar *logfile); static gboolean execute_command (SFCommand *cmd); static gint read_from_client (gint filedes); @@ -33,7 +59,7 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. static void server_log (const gchar *format, ...) G_GNUC_PRINTF (1, 2); static void server_quit (void); -@@ -151,7 +152,10 @@ static void print_socket_api_error +@@ -151,7 +161,10 @@ static void print_socket_api_error /* * Local variables */ @@ -45,7 +71,7 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. static GList *command_queue = NULL; static gint queue_length = 0; static gint request_no = 0; -@@ -285,6 +289,7 @@ script_fu_server_listen (gint timeout) +@@ -285,6 +298,7 @@ script_fu_server_listen (gint timeout) struct timeval tv; struct timeval *tvp = NULL; SELECT_MASK fds; @@ -53,7 +79,7 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. /* Set time struct */ if (timeout) -@@ -295,7 +300,10 @@ script_fu_server_listen (gint timeout) +@@ -295,7 +309,10 @@ script_fu_server_listen (gint timeout) } FD_ZERO (&fds); @@ -65,7 +91,7 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. g_hash_table_foreach (clients, script_fu_server_add_fd, &fds); /* Block until input arrives on one or more active sockets -@@ -307,15 +315,25 @@ script_fu_server_listen (gint timeout) +@@ -307,15 +324,23 @@ script_fu_server_listen (gint timeout) return; } @@ -75,9 +101,7 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. + for (sockno = 0; sockno < server_socks_used; sockno++) { - struct sockaddr_in clientname; -+ struct sockaddr_storage client; -+ struct sockaddr_in *client_in; -+ struct sockaddr_in6 *client_in6; ++ sa_union client; + gchar clientname[NI_MAXHOST]; /* Connection request on original socket. */ @@ -93,11 +117,11 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. + continue; + } + -+ new = accept (server_socks[sockno], (struct sockaddr *) &client, &size); ++ new = accept (server_socks[sockno], &(client.sa), &size); if (new < 0) { -@@ -324,13 +342,34 @@ script_fu_server_listen (gint timeout) +@@ -324,13 +349,32 @@ script_fu_server_listen (gint timeout) } /* Associate the client address with the socket */ @@ -109,22 +133,20 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. + strncpy (clientname, "(error during host address lookup)", NI_MAXHOST-1); + + /* Lookup address */ -+ (void) getnameinfo ((struct sockaddr *) &client, size, clientname, -+ sizeof (clientname), NULL, 0, NI_NUMERICHOST); ++ (void) getnameinfo (&(client.sa), size, clientname, sizeof (clientname), ++ NULL, 0, NI_NUMERICHOST); + + g_hash_table_insert (clients, GINT_TO_POINTER (new), + g_strdup (clientname)); + + /* Determine port number */ -+ switch (client.ss_family) ++ switch (client.family) + { + case AF_INET: -+ client_in = (struct sockaddr_in *) &client; -+ portno = (guint) g_ntohs (client_in->sin_port); ++ portno = (guint) g_ntohs (client.sa_in.sin_port); + break; + case AF_INET6: -+ client_in6 = (struct sockaddr_in6 *) &client; -+ portno = (guint) g_ntohs (client_in6->sin6_port); ++ portno = (guint) g_ntohs (client.sa_in6.sin6_port); + break; + default: + portno = 0; @@ -137,7 +159,7 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. } /* Service the client sockets. */ -@@ -392,18 +431,46 @@ static void +@@ -392,18 +436,46 @@ static void server_start (gint port, const gchar *logfile) { @@ -191,7 +213,7 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. /* Setup up the server log file */ if (logfile && *logfile) server_log_file = g_fopen (logfile, "a"); -@@ -592,11 +659,10 @@ read_from_client (gint filedes) +@@ -592,11 +664,10 @@ read_from_client (gint filedes) } static gint @@ -206,7 +228,7 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. /* Win32 needs the winsock library initialized. */ #ifdef G_OS_WIN32 -@@ -620,7 +686,7 @@ make_socket (guint port) +@@ -620,7 +691,7 @@ make_socket (guint port) #endif /* Create the socket. */ @@ -215,7 +237,7 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. if (sock < 0) { print_socket_api_error ("socket"); -@@ -629,12 +695,20 @@ make_socket (guint port) +@@ -629,12 +700,20 @@ make_socket (guint port) setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, &v, sizeof(v)); @@ -241,7 +263,7 @@ diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2. { print_socket_api_error ("bind"); gimp_quit (); -@@ -672,7 +746,12 @@ script_fu_server_shutdown_fd (gpointer k +@@ -672,7 +751,12 @@ script_fu_server_shutdown_fd (gpointer k static void server_quit (void) { diff --git a/gimp-2.6.9-combo-popup.patch b/gimp-2.6.9-combo-popup.patch deleted file mode 100644 index b637865..0000000 --- a/gimp-2.6.9-combo-popup.patch +++ /dev/null @@ -1,44 +0,0 @@ -From ac799274bd9ac1f3cb24624853ad35ee5b860f62 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Fri, 25 Jun 2010 13:53:04 +0200 -Subject: [PATCH] patch: combo-popup - -Squashed commit of the following: - -commit 0d1a4fd3c9bdf86ab71951c63bdf6915b8befd05 -Author: Michael Natterer -Date: Thu Jun 24 21:56:41 2010 +0200 - - Bug 622608 - GIMP crashes when clicking any scroll bar from combo boxes - - Don't cancel the popup in grab_notify() if the popup's grab was - shadowed by one of the widgets in the popup, like the scrollbar. - (cherry picked from commit 991210c0f94ed8e88eab7ebf19438bad85931930) ---- - app/widgets/gimpcontainerpopup.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/app/widgets/gimpcontainerpopup.c b/app/widgets/gimpcontainerpopup.c -index 50624cc..40cdfce 100644 ---- a/app/widgets/gimpcontainerpopup.c -+++ b/app/widgets/gimpcontainerpopup.c -@@ -181,8 +181,14 @@ static void - gimp_container_popup_grab_notify (GtkWidget *widget, - gboolean was_grabbed) - { -- if (! was_grabbed) -- g_signal_emit (widget, popup_signals[CANCEL], 0); -+ if (was_grabbed) -+ return; -+ -+ /* ignore grabs on one of our children, like the scrollbar */ -+ if (gtk_widget_is_ancestor (gtk_grab_get_current (), widget)) -+ return; -+ -+ g_signal_emit (widget, popup_signals[CANCEL], 0); - } - - static gboolean --- -1.7.0.1 - diff --git a/gimp.spec b/gimp.spec index 354ff23..d72c89b 100644 --- a/gimp.spec +++ b/gimp.spec @@ -30,8 +30,8 @@ Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 -Version: 2.6.9 -Release: 4%{?dist} +Version: 2.6.10 +Release: 1%{?dist} %define binver 2.6 %define gimp_lang_ver 20 %define interfacever 2.0 @@ -127,14 +127,12 @@ Patch1: gimp-2.6.7-jpeg-units.patch Patch2: gimp-2.6.6-minimize-dialogs.patch # backport: fix building with "gold" linker Patch3: gimp-2.6.8-gold.patch -# backport: GIMP crashes when clicking any scroll bar from combo boxes -Patch4: gimp-2.6.9-combo-popup.patch # https://bugzilla.redhat.com/show_bug.cgi?id=198367 # https://bugzilla.gnome.org/show_bug.cgi?id=623045 # make script-fu logging IPv6 aware -Patch5: gimp-2.6.9-script-fu-ipv6.patch +Patch4: gimp-2.6.10-script-fu-ipv6.patch # files changed by autoreconf after applying the above -Patch10: gimp-2.6.9-3-autoreconf.patch.bz2 +Patch10: gimp-2.6.10-1-autoreconf.patch.bz2 %description GIMP (GNU Image Manipulation Program) is a powerful image composition and @@ -217,8 +215,7 @@ EOF %patch1 -p1 -b .jpeg-units %patch2 -p1 -b .minimize-dialogs %patch3 -p1 -b .gold -%patch4 -p1 -b .combo-popup -%patch5 -p1 -b .script-fu-ipv6 +%patch4 -p1 -b .script-fu-ipv6 %patch10 -p1 -b .autoreconf %build @@ -481,6 +478,35 @@ fi %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser %changelog +* Fri Jul 09 2010 Nils Philippsen - 2:2.6.10-1 +- version 2.6.10 + + Overview of Changes from GIMP 2.6.9 to GIMP 2.6.10 + ================================================== + + * Bugs fixed: + + 613328 - TGA files saved with incorrect header yOrigin data + 623290 - Save As... does not save Windows Bitmap as default in dialog + 621363 - CMYK decompose broken + 595170 - brush - color from gradient works wrong in greyscale + 613838 - Error in gimp-hue-saturation PDB call + 622608 - GIMP crashes when clicking any scroll bar from combo boxes + 565459 - newly opened images are put into the background + + * Updated translations: + + German (de) + Italian (it) + Romanian (ro) + Portuguese (pt) + +- remove obsolete combo-popup patch +- update script-fu-ipv6 patch + +* Mon Jul 05 2010 Nils Philippsen - 2:2.6.9-5 +- rebuild against libwebkitgtk (instead of libwebkit) + * Tue Jun 29 2010 Nils Philippsen - 2:2.6.9-4 - script-fu: make rest of server IPv6-aware (#198367) diff --git a/import.log b/import.log index 6850c11..2ce41c7 100644 --- a/import.log +++ b/import.log @@ -1 +1,2 @@ gimp-2_6_9-1_fc14:F-12:gimp-2.6.9-1.fc14.src.rpm:1277375050 +gimp-2_6_10-1_fc14:F-12:gimp-2.6.10-1.fc14.src.rpm:1278678119 diff --git a/sources b/sources index 57cc4c0..faa8984 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -e5d0cc6f3ce127e51d7f3d3124b16a99 gimp-2.6.9.tar.bz2 -c9f1878af298871e0b0088583cc4ce13 gimp-2.6.9-3-autoreconf.patch.bz2 +557dfb72df30bea361d7feff4c6f2e26 gimp-2.6.10-1-autoreconf.patch.bz2 +b92710ad9f1b52fec98554d765473819 gimp-2.6.10.tar.bz2 From e702fa3c3336b9a8d2c616adccde9a8178011d99 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 28 Jul 2010 15:39:28 +0000 Subject: [PATCH 14/14] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 21 --------------------- branch | 1 - import.log | 2 -- 4 files changed, 24 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile delete mode 100644 branch delete mode 100644 import.log diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index f38628e..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: gimp -# $Id: Makefile,v 1.2 2007/10/15 18:47:27 notting Exp $ -NAME := gimp -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attempt a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/branch b/branch deleted file mode 100644 index 06de2d2..0000000 --- a/branch +++ /dev/null @@ -1 +0,0 @@ -F-12 diff --git a/import.log b/import.log deleted file mode 100644 index 2ce41c7..0000000 --- a/import.log +++ /dev/null @@ -1,2 +0,0 @@ -gimp-2_6_9-1_fc14:F-12:gimp-2.6.9-1.fc14.src.rpm:1277375050 -gimp-2_6_10-1_fc14:F-12:gimp-2.6.10-1.fc14.src.rpm:1278678119