diff -uraN gimp-2.2.15/aclocal.m4 gimp-2.2.16/aclocal.m4 --- gimp-2.2.15/aclocal.m4 2007-05-26 16:12:17.000000000 +0200 +++ gimp-2.2.16/aclocal.m4 2007-07-06 10:20:20.000000000 +0200 @@ -7575,7 +7575,7 @@ _PKG_TEXT -To get pkg-config, see .])], +To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS diff -uraN gimp-2.2.15/app/config/gimpconfig-deserialize.c gimp-2.2.16/app/config/gimpconfig-deserialize.c --- gimp-2.2.15/app/config/gimpconfig-deserialize.c 2007-04-17 23:09:57.000000000 +0200 +++ gimp-2.2.16/app/config/gimpconfig-deserialize.c 2007-07-06 10:19:21.000000000 +0200 @@ -85,6 +85,7 @@ static GTokenType gimp_config_deserialize_any (GValue *value, GParamSpec *prop_spec, GScanner *scanner); +static GTokenType gimp_config_skip_unknown_property (GScanner *scanner); static inline gboolean scanner_string_utf8_valid (GScanner *scanner, const gchar *token_name); @@ -132,15 +133,15 @@ guint i; guint scope_id; guint old_scope_id; - GTokenType token; - GTokenType next; + GTokenType token; + GTokenType next; g_return_val_if_fail (GIMP_IS_CONFIG (config), FALSE); klass = G_OBJECT_GET_CLASS (config); property_specs = g_object_class_list_properties (klass, &n_property_specs); - if (!property_specs) + if (! property_specs) return TRUE; scope_id = g_type_qname (G_TYPE_FROM_INSTANCE (config)); @@ -167,9 +168,9 @@ { next = g_scanner_peek_next_token (scanner); - if (next != token && - ! (store_unknown_tokens && - token == G_TOKEN_SYMBOL && next == G_TOKEN_IDENTIFIER)) + if (G_UNLIKELY (next != token && + ! (token == G_TOKEN_SYMBOL && + next == G_TOKEN_IDENTIFIER))) { break; } @@ -183,7 +184,10 @@ break; case G_TOKEN_IDENTIFIER: - token = gimp_config_deserialize_unknown (config, scanner); + if (store_unknown_tokens) + token = gimp_config_deserialize_unknown (config, scanner); + else + token = gimp_config_skip_unknown_property (scanner); break; case G_TOKEN_SYMBOL: @@ -790,3 +794,37 @@ return G_TOKEN_RIGHT_PAREN; } + +static GTokenType +gimp_config_skip_unknown_property (GScanner *scanner) +{ + gint open_paren = 0; + + while (TRUE) + { + GTokenType token = g_scanner_peek_next_token (scanner); + + switch (token) + { + case G_TOKEN_LEFT_PAREN: + open_paren++; + g_scanner_get_next_token (scanner); + break; + + case G_TOKEN_RIGHT_PAREN: + if (open_paren == 0) + return token; + + open_paren--; + g_scanner_get_next_token (scanner); + break; + + case G_TOKEN_EOF: + return token; + + default: + g_scanner_get_next_token (scanner); + break; + } + } +} diff -uraN gimp-2.2.15/app/widgets/gimpviewrenderer.c gimp-2.2.16/app/widgets/gimpviewrenderer.c --- gimp-2.2.15/app/widgets/gimpviewrenderer.c 2007-04-17 23:10:02.000000000 +0200 +++ gimp-2.2.16/app/widgets/gimpviewrenderer.c 2007-07-06 10:19:21.000000000 +0200 @@ -156,8 +156,8 @@ { renderer->viewable = NULL; - renderer->width = 8; - renderer->height = 8; + renderer->width = 0; + renderer->height = 0; renderer->border_width = 0; renderer->dot_for_dot = TRUE; renderer->is_popup = FALSE; @@ -904,21 +904,24 @@ gint dest_rowstride, gint dest_bytes) { - guchar *src, *s; - guchar *cb; - guchar *pad_buf; - gint a; - gint i, j, b; - gint x1, y1, x2, y2; - gint rowstride; - gboolean color; - gboolean has_alpha; - gboolean render_composite; - gint red_component; - gint green_component; - gint blue_component; - gint alpha_component; - gint offset; + const guchar *src, *s; + guchar *cb; + guchar *pad_buf; + gint a; + gint i, j, b; + gint x1, y1, x2, y2; + gint rowstride; + gboolean color; + gboolean has_alpha; + gboolean render_composite; + gint red_component; + gint green_component; + gint blue_component; + gint alpha_component; + gint offset; + + g_return_if_fail (temp_buf != NULL); + g_return_if_fail (dest_buffer != NULL); /* Here are the different cases this functions handles correctly: * 1) Offset temp_buf which does not necessarily cover full image area diff -uraN gimp-2.2.15/app/xcf/xcf-load.c gimp-2.2.16/app/xcf/xcf-load.c --- gimp-2.2.15/app/xcf/xcf-load.c 2007-04-17 23:09:51.000000000 +0200 +++ gimp-2.2.16/app/xcf/xcf-load.c 2007-07-06 10:19:21.000000000 +0200 @@ -121,6 +121,7 @@ { GimpImage *gimage; GimpLayer *layer; + GimpLayer *last_layer = NULL; GimpChannel *channel; GimpParasite *parasite; guint32 saved_pos; @@ -196,10 +197,12 @@ /* GIMP 2.2 wants an alpha channel for layers above the * background layer */ - if (position > 0) - gimp_layer_add_alpha (layer); + if (last_layer) + gimp_layer_add_alpha (last_layer); gimp_image_add_layer (gimage, layer, position); + + last_layer = layer; } /* restore the saved position so we'll be ready to @@ -291,7 +294,7 @@ while (TRUE) { - if (!xcf_load_prop (info, &prop_type, &prop_size)) + if (! xcf_load_prop (info, &prop_type, &prop_size)) return FALSE; switch (prop_type) @@ -370,8 +373,10 @@ nguides = prop_size / (4 + 1); for (i = 0; i < nguides; i++) { - info->cp += xcf_read_int32 (info->fp, (guint32 *) &position, 1); - info->cp += xcf_read_int8 (info->fp, (guint8 *) &orientation, 1); + info->cp += xcf_read_int32 (info->fp, + (guint32 *) &position, 1); + info->cp += xcf_read_int8 (info->fp, + (guint8 *) &orientation, 1); /* skip -1 guides from old XCFs */ if (position < 0) @@ -581,7 +586,7 @@ while (TRUE) { - if (!xcf_load_prop (info, &prop_type, &prop_size)) + if (! xcf_load_prop (info, &prop_type, &prop_size)) return FALSE; switch (prop_type) @@ -678,6 +683,7 @@ gimp_item_parasite_attach (GIMP_ITEM (layer), p); gimp_parasite_free (p); } + if (info->cp - base != prop_size) g_message ("Error while loading a layer's parasites"); } @@ -724,7 +730,7 @@ while (TRUE) { - if (!xcf_load_prop (info, &prop_type, &prop_size)) + if (! xcf_load_prop (info, &prop_type, &prop_size)) return FALSE; switch (prop_type) @@ -819,6 +825,7 @@ gimp_item_parasite_attach (GIMP_ITEM (*channel), p); gimp_parasite_free (p); } + if (info->cp - base != prop_size) g_message ("Error while loading a channel's parasites"); } @@ -856,8 +863,16 @@ PropType *prop_type, guint32 *prop_size) { - info->cp += xcf_read_int32 (info->fp, (guint32 *) prop_type, 1); - info->cp += xcf_read_int32 (info->fp, (guint32 *) prop_size, 1); + if (G_UNLIKELY (xcf_read_int32 (info->fp, (guint32 *) prop_type, 1) != 4)) + return FALSE; + + info->cp += 4; + + if (G_UNLIKELY (xcf_read_int32 (info->fp, (guint32 *) prop_size, 1) != 4)) + return FALSE; + + info->cp += 4; + return TRUE; } diff -uraN gimp-2.2.15/app/xcf/xcf-read.c gimp-2.2.16/app/xcf/xcf-read.c --- gimp-2.2.15/app/xcf/xcf-read.c 2007-04-17 23:09:51.000000000 +0200 +++ gimp-2.2.16/app/xcf/xcf-read.c 2007-07-06 10:19:21.000000000 +0200 @@ -34,11 +34,11 @@ guint32 *data, gint count) { - guint total = count; + guint total = 0; if (count > 0) { - xcf_read_int8 (fp, (guint8 *) data, count * 4); + total += xcf_read_int8 (fp, (guint8 *) data, count * 4); while (count--) { @@ -47,7 +47,7 @@ } } - return total * 4; + return total; } guint @@ -63,15 +63,17 @@ guint8 *data, gint count) { - guint total = count; + guint total = 0; while (count > 0) { - gint bytes = fread ((char *) data, sizeof (char), count, fp); + gint bytes = fread ((char *) data, sizeof (char), count, fp); if (bytes <= 0) /* something bad happened */ break; + total += bytes; + count -= bytes; data += bytes; } diff -uraN gimp-2.2.15/ChangeLog gimp-2.2.16/ChangeLog --- gimp-2.2.15/ChangeLog 2007-05-26 16:31:31.000000000 +0200 +++ gimp-2.2.16/ChangeLog 2007-07-06 20:35:27.000000000 +0200 @@ -1,3 +1,83 @@ +2007-07-06 Sven Neumann + + * Made 2.2.16 release. + +2007-07-06 Sven Neumann + + Merged from trunk (patches written by Mukund): + + * plug-ins/common/psd.c + * plug-ins/common/sunras.c: validate size values read from files + before using them to allocate memory. + +2007-07-05 Raphaël Quinet + + Merged several patches from trunk (written by Sven and myself): + + * plug-ins/common/psp.c: error handling cleanup. + + * plug-ins/common/psd.c (do_layer_record): check for invalid + number of channels in a layer. + + * plug-ins/common/pcx.c (load_image): check for invalid image + width or height. + + * plug-ins/bmp/bmpread.c: check for invalid image width or height, + return if the image could not be read instead of trying to set the + resolution or to flip a non-existing image. Fixes bug #453973. + +2007-07-05 Sven Neumann + + Merged from trunk: + + * app/xcf/xcf-read.c (xcf_read_int32) (xcf_read_int8): return the + number of bytes that have been read from the file. + + * app/xcf/xcf-load.c (xcf_load_prop): return FALSE when reading fails. + +2007-07-05 Raphaël Quinet + + Merged several patches from trunk (written by Mukund Sivaraman and + myself): + + * plug-ins/common/dicom.c + * plug-ins/common/pnm.c + * plug-ins/common/psd.c + * plug-ins/common/psp.c + * plug-ins/common/sunras.c + * plug-ins/common/xbm.c + * plug-ins/common/xwd.c: validate size values read from files + before using them to allocate memory. Fixes bug #451379, brought + to our attention by Sean Larsson of iDefense Labs. + +2007-07-04 Sven Neumann + + Merged from trunk (libgimpconfig/gimpconfig-deserialize.c): + + * app/config/gimpconfig-deserialize.c: be forward-compatible by + skipping unknown object properties. + +2007-07-04 Sven Neumann + + * app/xcf/xcf-load.c (xcf_load_image): fixed the change that was + applied to deal with bug #316207. Fixes bug #443097. + +2007-06-18 Sven Neumann + + Merged from trunk: + + * plug-ins/common/psd.c (seek_to_and_unpack_pixeldata): check + channel dimensions to avoid potential integer overflow. + +2007-06-11 Sven Neumann + + * configure.in: bumped version to 2.2.16, interface_age 16. + + Merged from trunk: + + * app/widgets/gimpviewrenderer.c (gimp_view_renderer_init): + initialize width and height to zero. Fixes bug #446005. + 2007-05-26 Sven Neumann * Made 2.2.15 release. @@ -85,13 +165,13 @@ 2007-03-26 Michael Schumacher - * plug-ins/common/compressor.c (save_image, load_image): + * plug-ins/common/compressor.c (save_image, load_image): Changed previous patch to be consistent with the other code in this file. 2007-03-26 Michael Schumacher - * plug-ins/common/compressor.c (save_image, load_image): + * plug-ins/common/compressor.c (save_image, load_image): Check if the files to be read or written and the temporary files have been opened. Otherwise, bail out safely instead of causing a crash. Fixes bug #422444 for the stable branch. @@ -122,7 +202,7 @@ Merged from trunk: * gimpui.pc.in (Libs): added gimpmodule-2.0. Fixes bug #356394. - + 2007-02-03 Mukund Sivaraman * plug-ins/common/psd_save.c: Backported fixes from bug #335130 to @@ -275,14 +355,14 @@ * plug-ins/common/depthmerge.c (dialogDepthMap2ChangedCallback): change "depthMap1Drawable" to "depthMap2Drawable" to fix typo introduced in version committed on 2004-04-21. - Should fix bug #355219. + Should fix bug #355219. 2006-09-08 Bill Skaggs Merged from HEAD branch, with some hackery: - * app/text/gimptextlayout-render.c (gimp_text_layout_render_glyphs): - handle tabs correctly, as instructed by behdad. Fixes bug #353132. + * app/text/gimptextlayout-render.c (gimp_text_layout_render_glyphs): + handle tabs correctly, as instructed by behdad. Fixes bug #353132. 2006-08-29 Sven Neumann @@ -444,7 +524,7 @@ 2006-07-06 Sven Neumann * Made 2.2.12 release. - + 2006-07-06 Sven Neumann Merged from HEAD branch: @@ -531,7 +611,7 @@ 2006-5-22 Bill Skaggs Merge from Head: - + * libgimpwidgets/gimpwidgets.c (gimp_coordinates_callback): use ROUND() to prevent incorrect chainbutton logic. Fixes bug #336259. @@ -548,7 +628,7 @@ 2006-5-19 Bill Skaggs Merge from Head: - + * app/dialogs/file-save-dialog.c: make sure dialog has not been destroyed when setting sensitive; fixes bug #322978. @@ -812,7 +892,7 @@ * plug-ins/script-fu/siod/slib.c: added a fix for the script-fu crash in chinese (and maybe other) locales. Applied to both - branches. Fixes bug #163212. + branches. Fixes bug #163212. 2005-12-11 Michael Natterer @@ -1232,7 +1312,7 @@ * plug-ins/common/newsprint.c: remove "optimization" that interacts badly with preview; fixes bug #161573. - + 2005-06-21 Bill Skaggs Merged from HEAD branch: @@ -1244,7 +1324,7 @@ Merged from HEAD branch: - * app/core/gimpimagefile.c (gimp_imagefile_load_thumb): + * app/core/gimpimagefile.c (gimp_imagefile_load_thumb): * app/widgets/gimpthumbbox.c (gimp_thumb_box_auto_thumbnail): don't display a preview and don't attempt to create one if the image file does not exist any longer (bug #307672). @@ -1279,7 +1359,7 @@ 2005-06-04 Sven Neumann Merged from HEAD branch: - + * app/tools/gimpmagnifytool.c (gimp_magnify_tool_button_release): fix calculation of zoom offsets in the case that dot-for-dot mode is not enabled (bug #306476). @@ -1302,7 +1382,7 @@ 2005-05-31 Sven Neumann Merged from HEAD branch: - + * app/widgets/gimpenumwidgets.c (gimp_enum_stock_box_set_child_padding): don't leak the return value of gtk_container_get_children (bug #305994, spotted by Ted @@ -1722,7 +1802,7 @@ Merged from HEAD branch: - * app/display/gimpstatusbar.c (gimp_statusbar_push_coords) + * app/display/gimpstatusbar.c (gimp_statusbar_push_coords) (gimp_statusbar_set_cursor): use RINT() instead of ROUND() to get proper rounding of negative values. Fixes bug #171497. @@ -1786,7 +1866,7 @@ * libgimpwidgets/gimpcolorscales.c (gimp_color_scales_update_scales): Block callback when updating hex entry, fixes bug #169882. - + 2005-03-20 Bill Skaggs * app/core/gimpimage-convert.c: applied patch from Adam @@ -1877,10 +1957,10 @@ 2005-03-06 Bill Skaggs - * app/display/gimpdisplayshell-callbacks.c: applied patch from + * app/display/gimpdisplayshell-callbacks.c: applied patch from Robert Ögren to improve autoscrolling with tablets in Windows, see bug #167960. - + 2005-03-05 Sven Neumann Fix for bug #169274, merged from HEAD: @@ -2138,7 +2218,7 @@ * app/file/file-utils.[ch]: added new utility function file_utils_filename_from_uri(). - + * app/file/file-open.c (file_open_image) * app/file/file-save.c (file_save_as): * app/file/file-utils.c (file_utils_find_proc) @@ -2175,9 +2255,9 @@ Merged from HEAD branch: * libgimp/gimpdrawablepreview.c: set preview bounds correctly - when previewed drawable extends beyond image edges, + when previewed drawable extends beyond image edges, fixes bug #165372. - + 2005-01-27 Manish Singh * README: update ancient IRC info. @@ -2186,8 +2266,8 @@ Merged from HEAD branch: - * app/tools/gimpcroptool.c (crop_aspect_changed): don't - accept aspect ratios that make image less than 1 byte high, + * app/tools/gimpcroptool.c (crop_aspect_changed): don't + accept aspect ratios that make image less than 1 byte high, fixes bug #164827. 2005-01-23 Sven Neumann @@ -2306,7 +2386,7 @@ * plug-ins/common/bumpmap.c: make sure bumpmap_init_params() is called when necessary, fixes bug #162285. - + 2005-01-18 Michael Natterer Merged from HEAD branch: @@ -2325,23 +2405,23 @@ * libgimpwidgets/gimpwidgets.c (gimp_coordinates_callback): Make sure last_x and last_y are set to values that match - those returned by gimp_size_entry_get_refval(), + those returned by gimp_size_entry_get_refval(), fixes bug #163951. - + 2005-01-18 Bill Skaggs Merged from HEAD branch: * app/dialogs/info-dialog.c: disconnect callbacks to prevent crash when destroying dialog, fixes bug #163617. - + 2005-01-17 Bill Skaggs Merged from HEAD branch: * plug-ins/xjt/xjt.c: use gimp_temp_name instead of trying to create temp dir at loc of file, fixes bug #164116. - + 2005-01-16 Sven Neumann Merged from HEAD branch: @@ -2401,7 +2481,7 @@ * plug-ins/Lighting/lighting_shade.c: remove artifacts when light strikes underside of bumpmapped surface; should fix bug #163877 (merged from HEAD) - + 2005-01-13 Michael Natterer Merged from HEAD branch: @@ -2674,7 +2754,7 @@ * app/widgets/gimpsizebox.c: give correct arguments to gimp_coordinates_new(). Fixes problem described in comment 6 of bug #162387. - + 2004-12-30 Sven Neumann * configure.in: bumped version to 2.2.2. @@ -2715,7 +2795,7 @@ * app/paint/gimpbrushcore.c (gimp_brush_core_subsample_mask): don't set array outside its bounds. Should fix bug #161323. Credit to Robert Ögren for figuring out what was wrong. - + 2004-12-27 Sven Neumann * plug-ins/common/colortoalpha.c: if possible, use @@ -2782,7 +2862,7 @@ * app/display/gimpdisplayshell-dnd.c * app/widgets/gimplayertreeview.c * app/widgets/gimptoolbox-dnd.c: replace % with space - in file name before showing error message, + in file name before showing error message, fixes bug #162147. * app/core/gimp-gui.c @@ -2793,7 +2873,7 @@ * gimp/app/widgets/gimpsizebox.c: fix incorrect Update Policy for size entry as pointed out by mitch. - + 2004-12-23 Bill Skaggs * plug-ins/common/cartoon.c @@ -2821,7 +2901,7 @@ * plug-ins/common/sel_gauss.c: give it a tile cache (didn't have one). Still very slow but a little better. - + 2004-12-24 Sven Neumann * plug-ins/common/despeckle.c (despeckle_median): don't call @@ -2834,13 +2914,13 @@ * plug-ins/common/mblur.c: set up tile cache before creating dialog -- major speedup in preview. - + 2004-12-23 Bill Skaggs * gimp/app/widgets/gimpsizebox.c: use gimp_coordinates_new() instead of duplicating a lot of code. Fixes bug #161756. - - * gimp/app/widgets/gimppropwidgets.c: small change in + + * gimp/app/widgets/gimppropwidgets.c: small change in chainbutton handling to make above work. 2004-12-23 Sven Neumann @@ -2884,7 +2964,7 @@ * Makefile.am * NEWS.pre-2.2: moved old NEWS here. - + 2004-12-21 Sven Neumann * plug-ins/common/unsharp.c (blur_line): fixed the degenerate case diff -uraN gimp-2.2.15/configure gimp-2.2.16/configure --- gimp-2.2.15/configure 2007-05-26 16:12:50.000000000 +0200 +++ gimp-2.2.16/configure 2007-07-06 10:21:06.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for GIMP 2.2.15. +# Generated by GNU Autoconf 2.61 for GIMP 2.2.16. # # Report bugs to . # @@ -728,8 +728,8 @@ # Identity of this package. PACKAGE_NAME='GIMP' PACKAGE_TARNAME='gimp' -PACKAGE_VERSION='2.2.15' -PACKAGE_STRING='GIMP 2.2.15' +PACKAGE_VERSION='2.2.16' +PACKAGE_STRING='GIMP 2.2.16' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GIMP' ac_unique_file="app/core/gimp.c" @@ -1649,7 +1649,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures GIMP 2.2.15 to adapt to many kinds of systems. +\`configure' configures GIMP 2.2.16 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1723,7 +1723,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GIMP 2.2.15:";; + short | recursive ) echo "Configuration of GIMP 2.2.16:";; esac cat <<\_ACEOF @@ -1902,7 +1902,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GIMP configure 2.2.15 +GIMP configure 2.2.16 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1916,7 +1916,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GIMP $as_me 2.2.15, which was +It was created by GIMP $as_me 2.2.16, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -2589,7 +2589,7 @@ # Define the identity of the package. PACKAGE='gimp' - VERSION='2.2.15' + VERSION='2.2.16' # Some tools Automake needs. @@ -2731,11 +2731,11 @@ GIMP_MAJOR_VERSION=2 GIMP_MINOR_VERSION=2 -GIMP_MICRO_VERSION=15 -GIMP_INTERFACE_AGE=15 -GIMP_BINARY_AGE=215 -GIMP_VERSION=2.2.15 -GIMP_REAL_VERSION=2.2.15 +GIMP_MICRO_VERSION=16 +GIMP_INTERFACE_AGE=16 +GIMP_BINARY_AGE=216 +GIMP_VERSION=2.2.16 +GIMP_REAL_VERSION=2.2.16 GIMP_API_VERSION=2.0 GIMP_APP_VERSION=2.2 GIMP_PLUGIN_VERSION=2.0 @@ -2787,7 +2787,7 @@ -LT_VERSION_INFO="200:15:200" +LT_VERSION_INFO="200:16:200" LT_CURRENT_MINUS_AGE=0 @@ -25523,7 +25523,7 @@ and GMODULE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. -To get pkg-config, see . +To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -25533,7 +25533,7 @@ and GMODULE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. -To get pkg-config, see . +To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else @@ -27386,7 +27386,7 @@ and GDK_PIXBUF_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. -To get pkg-config, see . +To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -27396,7 +27396,7 @@ and GDK_PIXBUF_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. -To get pkg-config, see . +To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else @@ -27547,7 +27547,7 @@ and LIBART_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. -To get pkg-config, see . +To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -27557,7 +27557,7 @@ and LIBART_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. -To get pkg-config, see . +To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else @@ -27661,7 +27661,7 @@ and FONTCONFIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. -To get pkg-config, see . +To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -27671,7 +27671,7 @@ and FONTCONFIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. -To get pkg-config, see . +To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else @@ -34541,7 +34541,7 @@ and PYGTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. -To get pkg-config, see . +To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -34551,7 +34551,7 @@ and PYGTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. -To get pkg-config, see . +To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else @@ -35728,7 +35728,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GIMP $as_me 2.2.15, which was +This file was extended by GIMP $as_me 2.2.16, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -35781,7 +35781,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -GIMP config.status 2.2.15 +GIMP config.status 2.2.16 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" @@ -35894,8 +35894,8 @@ gimp_major_ver=2 gimp_minor_ver=2 - gimp_micro_ver=15 - gimp_ver=2.2.15 + gimp_micro_ver=16 + gimp_ver=2.2.16 gimp_api_ver=2.0 diff -uraN gimp-2.2.15/configure.in gimp-2.2.16/configure.in --- gimp-2.2.15/configure.in 2007-05-26 16:10:46.000000000 +0200 +++ gimp-2.2.16/configure.in 2007-07-06 10:19:22.000000000 +0200 @@ -8,11 +8,11 @@ m4_define([gimp_major_version], [2]) m4_define([gimp_minor_version], [2]) -m4_define([gimp_micro_version], [15]) +m4_define([gimp_micro_version], [16]) m4_define([gimp_real_version], [gimp_major_version.gimp_minor_version.gimp_micro_version]) m4_define([gimp_version], [gimp_real_version]) -m4_define([gimp_interface_age], [15]) +m4_define([gimp_interface_age], [16]) m4_define([gimp_binary_age], [m4_eval(100 * gimp_minor_version + gimp_micro_version)]) diff -uraN gimp-2.2.15/devel-docs/app/Makefile gimp-2.2.16/devel-docs/app/Makefile --- gimp-2.2.15/devel-docs/app/Makefile 2007-05-26 16:13:17.000000000 +0200 +++ gimp-2.2.16/devel-docs/app/Makefile 2007-07-06 10:21:44.000000000 +0200 @@ -133,13 +133,13 @@ GIMPPRINT_TOONEW_VERSION = 4.3.0 GIMP_API_VERSION = 2.0 GIMP_APP_VERSION = 2.2 -GIMP_BINARY_AGE = 215 +GIMP_BINARY_AGE = 216 GIMP_DATA_VERSION = 2.0 GIMP_DESKTOP_ICON = wilber-icon.png GIMP_FULL_NAME = The GIMP -GIMP_INTERFACE_AGE = 15 +GIMP_INTERFACE_AGE = 16 GIMP_MAJOR_VERSION = 2 -GIMP_MICRO_VERSION = 15 +GIMP_MICRO_VERSION = 16 GIMP_MINOR_VERSION = 2 GIMP_MKENUMS = $(PERL) $(top_srcdir)/tools/gimp-mkenums GIMP_MODULES = modules @@ -148,7 +148,7 @@ GIMP_PKGCONFIG_VERSION = 2.0 GIMP_PLUGINS = plug-ins GIMP_PLUGIN_VERSION = 2.0 -GIMP_REAL_VERSION = 2.2.15 +GIMP_REAL_VERSION = 2.2.16 GIMP_REMOTE = gimp-remote-2.2$(EXEEXT) GIMP_SYSCONF_VERSION = 2.0 GIMP_THREAD_FLAGS = @@ -156,7 +156,7 @@ GIMP_TOOL_VERSION = 2.0 GIMP_UNSTABLE = no GIMP_USER_VERSION = 2.2 -GIMP_VERSION = 2.2.15 +GIMP_VERSION = 2.2.16 GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GLIB_GENMARSHAL = glib-genmarshal GLIB_LIBS = -lgobject-2.0 -lglib-2.0 @@ -249,7 +249,7 @@ LN_S = ln -s LTLIBOBJS = LT_CURRENT_MINUS_AGE = 0 -LT_VERSION_INFO = 200:15:200 +LT_VERSION_INFO = 200:16:200 MAIL = mail$(EXEEXT) MAINT = MAINTAINER_MODE_FALSE = # @@ -271,9 +271,9 @@ PACKAGE = gimp PACKAGE_BUGREPORT = http://bugzilla.gnome.org/enter_bug.cgi?product=GIMP PACKAGE_NAME = GIMP -PACKAGE_STRING = GIMP 2.2.15 +PACKAGE_STRING = GIMP 2.2.16 PACKAGE_TARNAME = gimp -PACKAGE_VERSION = 2.2.15 +PACKAGE_VERSION = 2.2.16 PANGOFT2_CFLAGS = -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include PANGOFT2_LIBS = -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 PANGOFT2_REQUIRED_VERSION = 1.4.0 @@ -319,7 +319,7 @@ TIFF = tiff$(EXEEXT) URL = url$(EXEEXT) USE_NLS = yes -VERSION = 2.2.15 +VERSION = 2.2.16 WINCLIPBOARD = WINDRES = : WINPRINT = diff -uraN gimp-2.2.15/devel-docs/app/.svn/entries gimp-2.2.16/devel-docs/app/.svn/entries --- gimp-2.2.15/devel-docs/app/.svn/entries 2007-05-26 16:10:47.000000000 +0200 +++ gimp-2.2.16/devel-docs/app/.svn/entries 2007-07-06 11:29:35.000000000 +0200 @@ -1,7 +1,7 @@ 8 dir -22623 +22886 svn+ssh://neo@svn.gnome.org/svn/gimp/branches/gimp-2-2/devel-docs/app svn+ssh://neo@svn.gnome.org/svn/gimp diff -uraN gimp-2.2.15/devel-docs/app/version gimp-2.2.16/devel-docs/app/version --- gimp-2.2.15/devel-docs/app/version 2007-05-26 16:13:17.000000000 +0200 +++ gimp-2.2.16/devel-docs/app/version 2007-07-06 10:21:44.000000000 +0200 @@ -1 +1 @@ -2.2.15 +2.2.16 diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/index.html gimp-2.2.16/devel-docs/libgimpbase/html/index.html --- gimp-2.2.15/devel-docs/libgimpbase/html/index.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/index.html 2007-07-06 20:36:31.000000000 +0200 @@ -15,7 +15,7 @@

- for GIMP 2.2.15 + for GIMP 2.2.16

diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpbaseenums.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpbaseenums.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpbaseenums.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpbaseenums.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@ GIMP Base Library Reference Manual Next -Top +Top  |  - Description + Description
@@ -56,17 +56,17 @@
-

Description

+

Description

Basic GIMP enumeration data types.

-

Details

+

Details

-

+

enum GimpCheckSize

-
typedef enum  /*< pdb-skip >*/
+
typedef enum  /*< pdb-skip >*/
 {
   GIMP_CHECK_SIZE_SMALL_CHECKS  = 0,  /*< desc="Small"  >*/
   GIMP_CHECK_SIZE_MEDIUM_CHECKS = 1,  /*< desc="Medium" >*/
@@ -79,9 +79,9 @@
 

-

+

enum GimpCheckType

-
typedef enum  /*< pdb-skip >*/
+
typedef enum  /*< pdb-skip >*/
 {
   GIMP_CHECK_TYPE_LIGHT_CHECKS = 0,  /*< desc="Light Checks"    >*/
   GIMP_CHECK_TYPE_GRAY_CHECKS  = 1,  /*< desc="Mid-Tone Checks" >*/
@@ -97,9 +97,9 @@
 

-

+

enum GimpImageBaseType

-
typedef enum
+
typedef enum
 {
   GIMP_RGB,     /*< desc="RGB color"     >*/
   GIMP_GRAY,    /*< desc="Grayscale"     >*/
@@ -112,9 +112,9 @@
 

-

+

enum GimpImageType

-
typedef enum
+
typedef enum
 {
   GIMP_RGB_IMAGE,      /*< desc="RGB"             >*/
   GIMP_RGBA_IMAGE,     /*< desc="RGB-alpha"       >*/
@@ -130,9 +130,9 @@
 

-

+

enum GimpMessageHandlerType

-
typedef enum
+
typedef enum
 {
   GIMP_MESSAGE_BOX,
   GIMP_CONSOLE,
@@ -145,9 +145,9 @@
 

-

+

enum GimpPDBArgType

-
typedef enum
+
typedef enum
 {
   GIMP_PDB_INT32,
   GIMP_PDB_INT16,
@@ -180,9 +180,9 @@
 

-

+

enum GimpPDBProcType

-
typedef enum
+
typedef enum
 {
   GIMP_INTERNAL,
   GIMP_PLUGIN,
@@ -196,9 +196,9 @@
 

-

+

enum GimpPDBStatusType

-
typedef enum
+
typedef enum
 {
   GIMP_PDB_EXECUTION_ERROR,
   GIMP_PDB_CALLING_ERROR,
@@ -213,9 +213,9 @@
 

-

+

enum GimpProgressCommand

-
typedef enum
+
typedef enum
 {
   GIMP_PROGRESS_COMMAND_START,
   GIMP_PROGRESS_COMMAND_END,
@@ -229,9 +229,9 @@
 

-

+

enum GimpStackTraceMode

-
typedef enum
+
typedef enum
 {
   GIMP_STACK_TRACE_NEVER,
   GIMP_STACK_TRACE_QUERY,
diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpbasetypes.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpbasetypes.html
--- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpbasetypes.html	2007-05-26 16:32:19.000000000 +0200
+++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpbasetypes.html	2007-07-06 20:36:31.000000000 +0200
@@ -21,16 +21,16 @@
 
- + Description

-gimpbaseenums +gimpbaseenums

gimpbaseenums — Basic GIMP enumeration data types.

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
@@ -56,17 +56,17 @@
-

Description

+

Description

Translation between gettext translation domain identifier and GType.

-

Details

+

Details

-

+

GimpEnumDesc

-
typedef struct {
+
typedef struct {
   gint   value;
   gchar *value_desc;
   gchar *value_help;
@@ -78,9 +78,9 @@
 

-

+

GimpFlagsDesc

-
typedef struct {
+
typedef struct {
   guint  value;
   gchar *value_desc;
   gchar *value_help;
@@ -92,9 +92,9 @@
 

-

+

gimp_type_set_translation_domain ()

-
void                gimp_type_set_translation_domain    (GType type,
+
void                gimp_type_set_translation_domain    (GType type,
                                                          const gchar *domain);

This function attaches a constant string as a gettext translation @@ -124,9 +124,9 @@


-

+

gimp_type_get_translation_domain ()

-
const gchar*        gimp_type_get_translation_domain    (GType type);
+
const gchar*        gimp_type_get_translation_domain    (GType type);

Retrieves the gettext translation domain identifier that has been previously set using gimp_type_set_translation_domain(). You should @@ -157,9 +157,9 @@


-

+

gimp_enum_set_value_descriptions ()

-
void                gimp_enum_set_value_descriptions    (GType enum_type,
+
void                gimp_enum_set_value_descriptions    (GType enum_type,
                                                          const GimpEnumDesc *descriptions);

Sets the array of human readable and translatable descriptions @@ -187,9 +187,9 @@


-

+

gimp_enum_get_value_descriptions ()

-
const GimpEnumDesc* gimp_enum_get_value_descriptions    (GType enum_type);
+
const GimpEnumDesc* gimp_enum_get_value_descriptions    (GType enum_type);

Retreives the array of human readable and translatable descriptions and help texts for enum values.

@@ -217,9 +217,9 @@

-

+

gimp_flags_get_value_descriptions ()

-
const GimpFlagsDesc* gimp_flags_get_value_descriptions  (GType flags_type);
+
const GimpFlagsDesc* gimp_flags_get_value_descriptions  (GType flags_type);

Retreives the array of human readable and translatable descriptions and help texts for flags values.

@@ -247,9 +247,9 @@

-

+

gimp_flags_set_value_descriptions ()

-
void                gimp_flags_set_value_descriptions   (GType flags_type,
+
void                gimp_flags_set_value_descriptions   (GType flags_type,
                                                          const GimpFlagsDesc *descriptions);

Sets the array of human readable and translatable descriptions diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpchecks.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpchecks.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpchecks.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpchecks.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@

- + Description

-gimpbasetypes +gimpbasetypes

gimpbasetypes — Translation between gettext translation domain identifier and GType.

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
@@ -52,17 +52,17 @@
-

Description

+

Description

Constants and functions related to rendering checkerboards.

-

Details

+

Details

-

+

GIMP_CHECK_SIZE

-
#define GIMP_CHECK_SIZE      8
+
#define GIMP_CHECK_SIZE      8
 

The default checkerboard size in pixels. This is configurable in the @@ -72,9 +72,9 @@


-

+

GIMP_CHECK_SIZE_SM

-
#define GIMP_CHECK_SIZE_SM   4
+
#define GIMP_CHECK_SIZE_SM   4
 

The default small checkerboard size in pixels. @@ -82,9 +82,9 @@


-

+

GIMP_CHECK_DARK

-
#define GIMP_CHECK_DARK      0.4
+
#define GIMP_CHECK_DARK      0.4
 

The dark gray value for the default checkerboard pattern. @@ -92,9 +92,9 @@


-

+

GIMP_CHECK_LIGHT

-
#define GIMP_CHECK_LIGHT     0.6
+
#define GIMP_CHECK_LIGHT     0.6
 

The light gray value for the default checkerboard pattern. @@ -102,9 +102,9 @@


-

+

gimp_checks_get_shades ()

-
void                gimp_checks_get_shades              (GimpCheckType type,
+
void                gimp_checks_get_shades              (GimpCheckType type,
                                                          guchar *light,
                                                          guchar *dark);

diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpdatafiles.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpdatafiles.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpdatafiles.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpdatafiles.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@

- + Description

-gimpchecks +gimpchecks

gimpchecks — Constants and functions related to rendering checkerboards.

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
@@ -54,17 +54,17 @@
-

Description

+

Description

Functions to handle GIMP data files.

-

Details

+

Details

-

+

GimpDatafileData

-
typedef struct {
+
typedef struct {
   const gchar *filename;
   const gchar *dirname;
   const gchar *basename;
@@ -80,9 +80,9 @@
 

-

+

GimpDatafileLoaderFunc ()

-
void                (*GimpDatafileLoaderFunc)           (const GimpDatafileData *file_data,
+
void                (*GimpDatafileLoaderFunc)           (const GimpDatafileData *file_data,
                                                          gpointer user_data);

@@ -107,9 +107,9 @@


-

+

gimp_datafiles_check_extension ()

-
gboolean            gimp_datafiles_check_extension      (const gchar *filename,
+
gboolean            gimp_datafiles_check_extension      (const gchar *filename,
                                                          const gchar *extension);

@@ -139,9 +139,9 @@


-

+

gimp_datafiles_read_directories ()

-
void                gimp_datafiles_read_directories     (const gchar *path_str,
+
void                gimp_datafiles_read_directories     (const gchar *path_str,
                                                          GFileTest flags,
                                                          GimpDatafileLoaderFunc loader_func,
                                                          gpointer user_data);
diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpenv.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpenv.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpenv.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpenv.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@
- + Description

-gimpdatafiles +gimpdatafiles

gimpdatafiles — Functions to handle GIMP data files.

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
@@ -59,18 +59,18 @@
-

Description

+

Description

A set of functions to find the locations of GIMP's data directories and configuration files.

-

Details

+

Details

-

+

gimp_directory ()

-
const gchar*        gimp_directory                      (void);
+
const gchar*        gimp_directory                      (void);

Returns the user-specific GIMP settings directory. If the environment variable GIMP2_DIRECTORY exists, it is used. If it is @@ -106,9 +106,9 @@


-

+

gimp_personal_rc_file ()

-
gchar*              gimp_personal_rc_file               (const gchar *basename);
+
gchar*              gimp_personal_rc_file               (const gchar *basename);

Returns the name of a file in the user-specific GIMP settings directory.

@@ -138,9 +138,9 @@

-

+

gimp_data_directory ()

-
const gchar*        gimp_data_directory                 (void);
+
const gchar*        gimp_data_directory                 (void);

Returns the top directory for GIMP data. If the environment variable GIMP2_DATADIR exists, that is used. It should be an @@ -167,9 +167,9 @@


-

+

gimp_locale_directory ()

-
const gchar*        gimp_locale_directory               (void);
+
const gchar*        gimp_locale_directory               (void);

Returns the top directory for GIMP locale files. If the environment variable GIMP2_LOCALEDIR exists, that is used. It should be an @@ -196,9 +196,9 @@


-

+

gimp_plug_in_directory ()

-
const gchar*        gimp_plug_in_directory              (void);
+
const gchar*        gimp_plug_in_directory              (void);

Returns the top directory for GIMP plug_ins and modules. If the environment variable GIMP2_PLUGINDIR exists, that is used. It @@ -225,9 +225,9 @@


-

+

gimp_sysconf_directory ()

-
const gchar*        gimp_sysconf_directory              (void);
+
const gchar*        gimp_sysconf_directory              (void);

Returns the top directory for GIMP config files. If the environment variable GIMP2_SYSCONFDIR exists, that is used. It should be an @@ -254,9 +254,9 @@


-

+

gimp_gtkrc ()

-
const gchar*        gimp_gtkrc                          (void);
+
const gchar*        gimp_gtkrc                          (void);

Returns the name of the GIMP's application-specific gtkrc file.

@@ -279,9 +279,9 @@

-

+

gimp_path_parse ()

-
GList*              gimp_path_parse                     (const gchar *path,
+
GList*              gimp_path_parse                     (const gchar *path,
                                                          gint max_paths,
                                                          gboolean check,
                                                          GList **check_failed);
@@ -324,9 +324,9 @@

-

+

gimp_path_to_str ()

-
gchar*              gimp_path_to_str                    (GList *path);
+
gchar*              gimp_path_to_str                    (GList *path);

@@ -350,9 +350,9 @@


-

+

gimp_path_free ()

-
void                gimp_path_free                      (GList *path);
+
void                gimp_path_free                      (GList *path);

This function frees the memory allocated for the list and the strings it contains.

@@ -370,9 +370,9 @@

-

+

gimp_path_get_user_writable_dir ()

-
gchar*              gimp_path_get_user_writable_dir     (GList *path);
+
gchar*              gimp_path_get_user_writable_dir     (GList *path);

Note that you have to g_free() the returned string.

diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimplimits.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimplimits.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimplimits.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimplimits.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@

- + Description

-gimpenv +gimpenv

gimpenv — Functions to access the GIMP environment.

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
@@ -50,18 +50,18 @@
-

Description

+

Description

Boundaries of some GIMP data types and some global constants.

-

Details

+

Details

-

+

GIMP_MIN_IMAGE_SIZE

-
#define GIMP_MIN_IMAGE_SIZE  1
+
#define GIMP_MIN_IMAGE_SIZE  1
 

The minimum width and height of a GIMP image in pixels. @@ -69,9 +69,9 @@


-

+

GIMP_MAX_IMAGE_SIZE

-
#define GIMP_MAX_IMAGE_SIZE  262144    /*  2^18  */
+
#define GIMP_MAX_IMAGE_SIZE  262144    /*  2^18  */
 

The maximum width and height of a GIMP image in pixels. This is a @@ -81,9 +81,9 @@


-

+

GIMP_MIN_RESOLUTION

-
#define GIMP_MIN_RESOLUTION  5e-3      /*  shouldn't display as 0.000  */
+
#define GIMP_MIN_RESOLUTION  5e-3      /*  shouldn't display as 0.000  */
 

The minimum resolution of a GIMP image in pixels per inch. This is a @@ -94,9 +94,9 @@


-

+

GIMP_MAX_RESOLUTION

-
#define GIMP_MAX_RESOLUTION  65536.0
+
#define GIMP_MAX_RESOLUTION  65536.0
 

The maximum resolution of a GIMP image in pixels per inch. This is a @@ -107,9 +107,9 @@


-

+

GIMP_MAX_MEMSIZE

-
#define GIMP_MAX_MEMSIZE     ((guint64) 1 << 42) /*  4 terabyte;
+
#define GIMP_MAX_MEMSIZE     ((guint64) 1 << 42) /*  4 terabyte;
 

A large but arbitrary value that can be used when an upper limit for a diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpmemsize.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpmemsize.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpmemsize.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpmemsize.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@

- + Description

-gimplimits +gimplimits

gimplimits — Boundaries of some GIMP data types and some global constants.

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
@@ -52,17 +52,17 @@
-

Description

+

Description

Functions to (de)serialize a given memory size.

-

Details

+

Details

-

+

gimp_memsize_serialize ()

-
gchar*              gimp_memsize_serialize              (guint64 memsize);
+
gchar*              gimp_memsize_serialize              (guint64 memsize);

Creates a string representation of a given memory size. This string can be parsed by gimp_memsize_deserialize() and can thus be used in @@ -92,9 +92,9 @@


-

+

gimp_memsize_deserialize ()

-
gboolean            gimp_memsize_deserialize            (const gchar *string,
+
gboolean            gimp_memsize_deserialize            (const gchar *string,
                                                          guint64 *memsize);

Parses a string representation of a memory size as returned by @@ -129,9 +129,9 @@


-

+

gimp_memsize_to_string ()

-
gchar*              gimp_memsize_to_string              (guint64 memsize);
+
gchar*              gimp_memsize_to_string              (guint64 memsize);

This function returns a human readable, translated representation of the passed memsize. Large values are displayed using a @@ -158,9 +158,9 @@


-

+

GIMP_TYPE_MEMSIZE

-
#define GIMP_TYPE_MEMSIZE               (gimp_memsize_get_type ())
+
#define GIMP_TYPE_MEMSIZE               (gimp_memsize_get_type ())
 

GIMP_TYPE_MEMSIZE is a GType derived from G_TYPE_UINT64. @@ -168,9 +168,9 @@


-

+

GIMP_VALUE_HOLDS_MEMSIZE()

-
#define GIMP_VALUE_HOLDS_MEMSIZE(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_MEMSIZE))
+
#define GIMP_VALUE_HOLDS_MEMSIZE(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_MEMSIZE))
 

diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpparasite.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpparasite.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpparasite.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpparasite.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@

- + Description

-gimpmemsize +gimpmemsize

gimpmemsize — Functions to (de)serialize a given memory size.

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
@@ -72,18 +72,18 @@
-

Description

+

Description

Arbitrary pieces of data which can be attached to various GIMP objects.

-

Details

+

Details

-

+

GimpParasite

-
typedef struct {
+
typedef struct {
   gchar    *name;   /* The name of the parasite. USE A UNIQUE PREFIX! */
   guint32   flags;  /* save Parasite in XCF file, etc.                */
   guint32   size;   /* amount of data                                 */
@@ -97,9 +97,9 @@
 

-

+

gimp_parasite_new ()

-
GimpParasite*       gimp_parasite_new                   (const gchar *name,
+
GimpParasite*       gimp_parasite_new                   (const gchar *name,
                                                          guint32 flags,
                                                          guint32 size,
                                                          gconstpointer data);
@@ -141,9 +141,9 @@

-

+

gimp_parasite_free ()

-
void                gimp_parasite_free                  (GimpParasite *parasite);
+
void                gimp_parasite_free                  (GimpParasite *parasite);

@@ -160,9 +160,9 @@

-

+

gimp_parasite_copy ()

-
GimpParasite*       gimp_parasite_copy                  (const GimpParasite *parasite);
+
GimpParasite*       gimp_parasite_copy                  (const GimpParasite *parasite);

@@ -186,9 +186,9 @@

-

+

gimp_parasite_compare ()

-
gboolean            gimp_parasite_compare               (const GimpParasite *a,
+
gboolean            gimp_parasite_compare               (const GimpParasite *a,
                                                          const GimpParasite *b);

@@ -218,9 +218,9 @@


-

+

gimp_parasite_is_type ()

-
gboolean            gimp_parasite_is_type               (const GimpParasite *parasite,
+
gboolean            gimp_parasite_is_type               (const GimpParasite *parasite,
                                                          const gchar *name);

@@ -250,9 +250,9 @@


-

+

gimp_parasite_is_persistent ()

-
gboolean            gimp_parasite_is_persistent         (const GimpParasite *parasite);
+
gboolean            gimp_parasite_is_persistent         (const GimpParasite *parasite);

@@ -276,9 +276,9 @@

-

+

gimp_parasite_is_undoable ()

-
gboolean            gimp_parasite_is_undoable           (const GimpParasite *parasite);
+
gboolean            gimp_parasite_is_undoable           (const GimpParasite *parasite);

@@ -302,9 +302,9 @@

-

+

gimp_parasite_has_flag ()

-
gboolean            gimp_parasite_has_flag              (const GimpParasite *parasite,
+
gboolean            gimp_parasite_has_flag              (const GimpParasite *parasite,
                                                          gulong flag);

@@ -334,9 +334,9 @@


-

+

gimp_parasite_flags ()

-
gulong              gimp_parasite_flags                 (const GimpParasite *parasite);
+
gulong              gimp_parasite_flags                 (const GimpParasite *parasite);

@@ -360,9 +360,9 @@

-

+

gimp_parasite_name ()

-
const gchar*        gimp_parasite_name                  (const GimpParasite *parasite);
+
const gchar*        gimp_parasite_name                  (const GimpParasite *parasite);

@@ -386,9 +386,9 @@

-

+

gimp_parasite_data ()

-
gconstpointer       gimp_parasite_data                  (const GimpParasite *parasite);
+
gconstpointer       gimp_parasite_data                  (const GimpParasite *parasite);

@@ -412,9 +412,9 @@

-

+

gimp_parasite_data_size ()

-
glong               gimp_parasite_data_size             (const GimpParasite *parasite);
+
glong               gimp_parasite_data_size             (const GimpParasite *parasite);

@@ -438,9 +438,9 @@

-

+

GIMP_PARASITE_PERSISTENT

-
#define GIMP_PARASITE_PERSISTENT 1
+
#define GIMP_PARASITE_PERSISTENT 1
 

@@ -448,9 +448,9 @@


-

+

GIMP_PARASITE_UNDOABLE

-
#define GIMP_PARASITE_UNDOABLE   2
+
#define GIMP_PARASITE_UNDOABLE   2
 

@@ -458,9 +458,9 @@


-

+

GIMP_PARASITE_ATTACH_PARENT

-
#define GIMP_PARASITE_ATTACH_PARENT     (0x80 << 8)
+
#define GIMP_PARASITE_ATTACH_PARENT     (0x80 << 8)
 

@@ -468,9 +468,9 @@


-

+

GIMP_PARASITE_PARENT_PERSISTENT

-
#define GIMP_PARASITE_PARENT_PERSISTENT (GIMP_PARASITE_PERSISTENT << 8)
+
#define GIMP_PARASITE_PARENT_PERSISTENT (GIMP_PARASITE_PERSISTENT << 8)
 

@@ -478,9 +478,9 @@


-

+

GIMP_PARASITE_PARENT_UNDOABLE

-
#define GIMP_PARASITE_PARENT_UNDOABLE   (GIMP_PARASITE_UNDOABLE << 8)
+
#define GIMP_PARASITE_PARENT_UNDOABLE   (GIMP_PARASITE_UNDOABLE << 8)
 

@@ -488,9 +488,9 @@


-

+

GIMP_PARASITE_ATTACH_GRANDPARENT

-
#define GIMP_PARASITE_ATTACH_GRANDPARENT     (0x80 << 16)
+
#define GIMP_PARASITE_ATTACH_GRANDPARENT     (0x80 << 16)
 

@@ -498,9 +498,9 @@


-

+

GIMP_PARASITE_GRANDPARENT_PERSISTENT

-
#define GIMP_PARASITE_GRANDPARENT_PERSISTENT (GIMP_PARASITE_PERSISTENT << 16)
+
#define GIMP_PARASITE_GRANDPARENT_PERSISTENT (GIMP_PARASITE_PERSISTENT << 16)
 

@@ -508,9 +508,9 @@


-

+

GIMP_PARASITE_GRANDPARENT_UNDOABLE

-
#define GIMP_PARASITE_GRANDPARENT_UNDOABLE   (GIMP_PARASITE_UNDOABLE << 16)
+
#define GIMP_PARASITE_GRANDPARENT_UNDOABLE   (GIMP_PARASITE_UNDOABLE << 16)
 

@@ -518,7 +518,7 @@

- + Description

-gimpparasite +gimpparasite

gimpparasite — Arbitrary pieces of data which can be attached to various GIMP objects.

Next
Top +
Top  |  - Description
@@ -50,18 +50,18 @@
-

Description

+

Description

Utility functions to (de)serialize certain C structures to/from GimpParasite's.

-

Details

+

Details

-

+

GIMP_PIXPIPE_MAXDIM

-
#define GIMP_PIXPIPE_MAXDIM 4
+
#define GIMP_PIXPIPE_MAXDIM 4
 

@@ -69,9 +69,9 @@


-

+

gimp_pixpipe_params_init ()

-
void                gimp_pixpipe_params_init            (GimpPixPipeParams *params);
+
void                gimp_pixpipe_params_init            (GimpPixPipeParams *params);

@@ -88,9 +88,9 @@

-

+

gimp_pixpipe_params_parse ()

-
void                gimp_pixpipe_params_parse           (const gchar *parameters,
+
void                gimp_pixpipe_params_parse           (const gchar *parameters,
                                                          GimpPixPipeParams *params);

@@ -115,9 +115,9 @@


-

+

gimp_pixpipe_params_build ()

-
gchar*              gimp_pixpipe_params_build           (GimpPixPipeParams *params);
+
gchar*              gimp_pixpipe_params_build           (GimpPixPipeParams *params);

@@ -141,7 +141,7 @@
-

See Also

+

See Also

GimpParasite

diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpprotocol.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpprotocol.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpprotocol.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpprotocol.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@
- + Description

-gimpparasiteio +gimpparasiteio

gimpparasiteio — Utility functions to (de)serialize certain C structures to/from GimpParasite's.

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
@@ -92,18 +92,18 @@
-

Description

+

Description

The communication protocol between GIMP and it's plug-ins.

-

Details

+

Details

-

+

GIMP_PROTOCOL_VERSION

-
#define GIMP_PROTOCOL_VERSION  0x0011
+
#define GIMP_PROTOCOL_VERSION  0x0011
 

@@ -111,9 +111,9 @@


-

+

GPConfig

-
typedef struct {
+
typedef struct {
   guint32  version;
   guint32  tile_width;
   guint32  tile_height;
@@ -142,9 +142,9 @@
 

-

+

GPTileReq

-
typedef struct {
+
typedef struct {
   gint32   drawable_ID;
   guint32  tile_num;
   guint32  shadow;
@@ -156,18 +156,18 @@
 

-

+

GPTileAck

-
typedef struct _GPTileAck GPTileAck;
+
typedef struct _GPTileAck GPTileAck;


-

+

GPTileData

-
typedef struct {
+
typedef struct {
   gint32   drawable_ID;
   guint32  tile_num;
   guint32  shadow;
@@ -184,9 +184,9 @@
 

-

+

GPParam

-
typedef struct {
+
typedef struct {
   guint32 type;
 
   union
@@ -234,9 +234,9 @@
 

-

+

GPParamDef

-
typedef struct {
+
typedef struct {
   guint32  type;
   gchar   *name;
   gchar   *description;
@@ -248,9 +248,9 @@
 

-

+

GPProcRun

-
typedef struct {
+
typedef struct {
   gchar   *name;
   guint32  nparams;
   GPParam *params;
@@ -262,9 +262,9 @@
 

-

+

GPProcReturn

-
typedef struct {
+
typedef struct {
   gchar   *name;
   guint32  nparams;
   GPParam *params;
@@ -276,9 +276,9 @@
 

-

+

GPProcInstall

-
typedef struct {
+
typedef struct {
   gchar      *name;
   gchar      *blurb;
   gchar      *help;
@@ -300,9 +300,9 @@
 

-

+

GPProcUninstall

-
typedef struct {
+
typedef struct {
   gchar *name;
 } GPProcUninstall;
 
@@ -312,18 +312,18 @@

-

+

gp_init ()

-
void                gp_init                             (void);
+
void                gp_init                             (void);


-

+

gp_has_init_write ()

-
gboolean            gp_has_init_write                   (GIOChannel *channel,
+
gboolean            gp_has_init_write                   (GIOChannel *channel,
                                                          gpointer user_data);

@@ -353,9 +353,9 @@


-

+

gp_quit_write ()

-
gboolean            gp_quit_write                       (GIOChannel *channel,
+
gboolean            gp_quit_write                       (GIOChannel *channel,
                                                          gpointer user_data);

@@ -385,9 +385,9 @@


-

+

gp_config_write ()

-
gboolean            gp_config_write                     (GIOChannel *channel,
+
gboolean            gp_config_write                     (GIOChannel *channel,
                                                          GPConfig *config,
                                                          gpointer user_data);

@@ -423,9 +423,9 @@


-

+

gp_tile_req_write ()

-
gboolean            gp_tile_req_write                   (GIOChannel *channel,
+
gboolean            gp_tile_req_write                   (GIOChannel *channel,
                                                          GPTileReq *tile_req,
                                                          gpointer user_data);

@@ -461,9 +461,9 @@


-

+

gp_tile_ack_write ()

-
gboolean            gp_tile_ack_write                   (GIOChannel *channel,
+
gboolean            gp_tile_ack_write                   (GIOChannel *channel,
                                                          gpointer user_data);

@@ -493,9 +493,9 @@


-

+

gp_tile_data_write ()

-
gboolean            gp_tile_data_write                  (GIOChannel *channel,
+
gboolean            gp_tile_data_write                  (GIOChannel *channel,
                                                          GPTileData *tile_data,
                                                          gpointer user_data);

@@ -531,9 +531,9 @@


-

+

gp_proc_run_write ()

-
gboolean            gp_proc_run_write                   (GIOChannel *channel,
+
gboolean            gp_proc_run_write                   (GIOChannel *channel,
                                                          GPProcRun *proc_run,
                                                          gpointer user_data);

@@ -569,9 +569,9 @@


-

+

gp_proc_return_write ()

-
gboolean            gp_proc_return_write                (GIOChannel *channel,
+
gboolean            gp_proc_return_write                (GIOChannel *channel,
                                                          GPProcReturn *proc_return,
                                                          gpointer user_data);

@@ -607,9 +607,9 @@


-

+

gp_temp_proc_run_write ()

-
gboolean            gp_temp_proc_run_write              (GIOChannel *channel,
+
gboolean            gp_temp_proc_run_write              (GIOChannel *channel,
                                                          GPProcRun *proc_run,
                                                          gpointer user_data);

@@ -645,9 +645,9 @@


-

+

gp_temp_proc_return_write ()

-
gboolean            gp_temp_proc_return_write           (GIOChannel *channel,
+
gboolean            gp_temp_proc_return_write           (GIOChannel *channel,
                                                          GPProcReturn *proc_return,
                                                          gpointer user_data);

@@ -683,9 +683,9 @@


-

+

gp_proc_install_write ()

-
gboolean            gp_proc_install_write               (GIOChannel *channel,
+
gboolean            gp_proc_install_write               (GIOChannel *channel,
                                                          GPProcInstall *proc_install,
                                                          gpointer user_data);

@@ -721,9 +721,9 @@


-

+

gp_proc_uninstall_write ()

-
gboolean            gp_proc_uninstall_write             (GIOChannel *channel,
+
gboolean            gp_proc_uninstall_write             (GIOChannel *channel,
                                                          GPProcUninstall *proc_uninstall,
                                                          gpointer user_data);

@@ -759,9 +759,9 @@


-

+

gp_extension_ack_write ()

-
gboolean            gp_extension_ack_write              (GIOChannel *channel,
+
gboolean            gp_extension_ack_write              (GIOChannel *channel,
                                                          gpointer user_data);

@@ -791,7 +791,7 @@

-

See Also

+

See Also

libgimp-gimpwire

diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpsignal.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpsignal.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpsignal.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpsignal.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@
- + Description

-gimpprotocol +gimpprotocol

gimpprotocol — The communication protocol between GIMP and it's plug-ins.

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
@@ -49,18 +49,18 @@
-

Description

+

Description

Portable signal handling.

-

Details

+

Details

-

+

GimpSignalHandlerFunc ()

-
void                (*GimpSignalHandlerFunc)            (gint signum);
+
void                (*GimpSignalHandlerFunc)            (gint signum);

A prototype for signal handler functions. Note that each function which takes or returns a variable of this type also accepts or may return @@ -81,9 +81,9 @@


-

+

gimp_signal_private ()

-
GimpSignalHandlerFunc gimp_signal_private               (gint signum,
+
GimpSignalHandlerFunc gimp_signal_private               (gint signum,
                                                          GimpSignalHandlerFunc handler,
                                                          gint flags);

@@ -135,7 +135,7 @@

-

See Also

+

See Also

signal(2), signal(5 or 7), sigaction(2).

diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpunit.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpunit.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpunit.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpunit.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@
- + Description

-gimpsignal +gimpsignal

gimpsignal — Portable signal handling.

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
- + Description

-gimpunit +gimpunit

gimpunit — Provides a collection of predefined units and functions for creating user-defined units.

@@ -70,7 +70,7 @@
-

Description

+

Description

Provides a collection of predefined units and functions for creating user-defined units. @@ -78,11 +78,11 @@

-

Details

+

Details

-

+

enum GimpUnit

-
typedef enum /*< skip >*/
+
typedef enum /*< skip >*/
 {
   GIMP_UNIT_PIXEL   = 0,
 
@@ -102,9 +102,9 @@
 

-

+

gimp_unit_get_number_of_units ()

-
gint                gimp_unit_get_number_of_units       (void);
+
gint                gimp_unit_get_number_of_units       (void);

Returns the number of units which are known to the GimpUnit system.

@@ -121,9 +121,9 @@


-

+

gimp_unit_get_number_of_built_in_units ()

-
gint                gimp_unit_get_number_of_built_in_units
+
gint                gimp_unit_get_number_of_built_in_units
                                                         (void);

Returns the number of GimpUnit's which are hardcoded in the unit system @@ -143,9 +143,9 @@


-

+

gimp_unit_new ()

-
GimpUnit            gimp_unit_new                       (gchar *identifier,
+
GimpUnit            gimp_unit_new                       (gchar *identifier,
                                                          gdouble factor,
                                                          gint digits,
                                                          gchar *symbol,
@@ -210,9 +210,9 @@
 

-

+

gimp_unit_get_deletion_flag ()

-
gboolean            gimp_unit_get_deletion_flag         (GimpUnit unit);
+
gboolean            gimp_unit_get_deletion_flag         (GimpUnit unit);

@@ -236,9 +236,9 @@


-

+

gimp_unit_set_deletion_flag ()

-
void                gimp_unit_set_deletion_flag         (GimpUnit unit,
+
void                gimp_unit_set_deletion_flag         (GimpUnit unit,
                                                          gboolean deletion_flag);

Sets a GimpUnit's deletion_flag. If the deletion_flag of a unit is @@ -269,9 +269,9 @@


-

+

gimp_unit_get_factor ()

-
gdouble             gimp_unit_get_factor                (GimpUnit unit);
+
gdouble             gimp_unit_get_factor                (GimpUnit unit);

A GimpUnit's factor is defined to be:

@@ -301,9 +301,9 @@

-

+

gimp_unit_get_digits ()

-
gint                gimp_unit_get_digits                (GimpUnit unit);
+
gint                gimp_unit_get_digits                (GimpUnit unit);

Returns the number of digits an entry field should provide to get approximately the same accuracy as an inch input field with two digits. @@ -331,9 +331,9 @@


-

+

gimp_unit_get_identifier ()

-
const gchar*        gimp_unit_get_identifier            (GimpUnit unit);
+
const gchar*        gimp_unit_get_identifier            (GimpUnit unit);

This is an unstranslated string and must not be changed or freed.

@@ -357,9 +357,9 @@


-

+

gimp_unit_get_symbol ()

-
const gchar*        gimp_unit_get_symbol                (GimpUnit unit);
+
const gchar*        gimp_unit_get_symbol                (GimpUnit unit);

This is e.g. "''" for UNIT_INCH.

@@ -386,9 +386,9 @@

-

+

gimp_unit_get_abbreviation ()

-
const gchar*        gimp_unit_get_abbreviation          (GimpUnit unit);
+
const gchar*        gimp_unit_get_abbreviation          (GimpUnit unit);

For built-in units, this function returns the translated abbreviation of the unit. @@ -416,9 +416,9 @@


-

+

gimp_unit_get_singular ()

-
const gchar*        gimp_unit_get_singular              (GimpUnit unit);
+
const gchar*        gimp_unit_get_singular              (GimpUnit unit);

For built-in units, this function returns the translated singular form of the unit's name. @@ -446,9 +446,9 @@


-

+

gimp_unit_get_plural ()

-
const gchar*        gimp_unit_get_plural                (GimpUnit unit);
+
const gchar*        gimp_unit_get_plural                (GimpUnit unit);

For built-in units, this function returns the translated plural form of the unit's name. @@ -476,9 +476,9 @@


-

+

GIMP_TYPE_UNIT

-
#define GIMP_TYPE_UNIT               (gimp_unit_get_type ())
+
#define GIMP_TYPE_UNIT               (gimp_unit_get_type ())
 

GIMP_TYPE_UNIT is a GType derived from G_TYPE_INT. @@ -486,9 +486,9 @@


-

+

GIMP_VALUE_HOLDS_UNIT()

-
#define GIMP_VALUE_HOLDS_UNIT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_UNIT))
+
#define GIMP_VALUE_HOLDS_UNIT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_UNIT))
 

@@ -506,7 +506,7 @@

Next
Top +
Top  |  - Description
@@ -78,17 +78,17 @@
-

Description

+

Description

-

Details

+

Details

-

+

gimp_any_to_utf8 ()

-
gchar*              gimp_any_to_utf8                    (const gchar *str,
+
gchar*              gimp_any_to_utf8                    (const gchar *str,
                                                          gssize len,
                                                          const gchar *warning_format,
                                                          ...);
@@ -146,9 +146,9 @@

-

+

gimp_filename_to_utf8 ()

-
const gchar*        gimp_filename_to_utf8               (const gchar *filename);
+
const gchar*        gimp_filename_to_utf8               (const gchar *filename);

Convert a filename in the filesystem's encoding to UTF-8 temporarily. The return value is a pointer to a string that is @@ -181,9 +181,9 @@


-

+

gimp_utf8_strtrim ()

-
gchar*              gimp_utf8_strtrim                   (const gchar *str,
+
gchar*              gimp_utf8_strtrim                   (const gchar *str,
                                                          gint max_chars);

Creates a (possibly trimmed) copy of str. The string is cut if it @@ -217,9 +217,9 @@


-

+

gimp_escape_uline ()

-
gchar*              gimp_escape_uline                   (const gchar *str);
+
gchar*              gimp_escape_uline                   (const gchar *str);

This function returns a copy of str with all underline converted to two adjacent underlines. This comes in handy when needing to display @@ -250,9 +250,9 @@


-

+

gimp_strip_uline ()

-
gchar*              gimp_strip_uline                    (const gchar *str);
+
gchar*              gimp_strip_uline                    (const gchar *str);

This function returns a copy of str stripped of underline characters. This comes in handy when needing to strip mnemonics @@ -285,9 +285,9 @@


-

+

gimp_enum_get_desc ()

-
GimpEnumDesc*       gimp_enum_get_desc                  (GEnumClass *enum_class,
+
GimpEnumDesc*       gimp_enum_get_desc                  (GEnumClass *enum_class,
                                                          gint value);

Retrieves GimpEnumDesc associated with the given value, or NULL.

@@ -320,9 +320,9 @@

-

+

gimp_enum_get_value ()

-
gboolean            gimp_enum_get_value                 (GType enum_type,
+
gboolean            gimp_enum_get_value                 (GType enum_type,
                                                          gint value,
                                                          const gchar **value_name,
                                                          const gchar **value_nick,
@@ -383,9 +383,9 @@
 

-

+

gimp_enum_value_get_desc ()

-
const gchar*        gimp_enum_value_get_desc            (GEnumClass *enum_class,
+
const gchar*        gimp_enum_value_get_desc            (GEnumClass *enum_class,
                                                          GEnumValue *enum_value);

Retrieves the translated desc for a given enum_value.

@@ -418,9 +418,9 @@

-

+

gimp_enum_value_get_help ()

-
const gchar*        gimp_enum_value_get_help            (GEnumClass *enum_class,
+
const gchar*        gimp_enum_value_get_help            (GEnumClass *enum_class,
                                                          GEnumValue *enum_value);

Retrieves the translated help for a given enum_value.

@@ -453,9 +453,9 @@

-

+

gimp_flags_get_first_desc ()

-
GimpFlagsDesc*      gimp_flags_get_first_desc           (GFlagsClass *flags_class,
+
GimpFlagsDesc*      gimp_flags_get_first_desc           (GFlagsClass *flags_class,
                                                          guint value);

Retrieves the first GimpFlagsDesc that matches the given value, or NULL.

@@ -488,9 +488,9 @@

-

+

gimp_flags_get_first_value ()

-
gboolean            gimp_flags_get_first_value          (GType flags_type,
+
gboolean            gimp_flags_get_first_value          (GType flags_type,
                                                          guint value,
                                                          const gchar **value_name,
                                                          const gchar **value_nick,
@@ -551,9 +551,9 @@
 

-

+

gimp_flags_value_get_desc ()

-
const gchar*        gimp_flags_value_get_desc           (GFlagsClass *flags_class,
+
const gchar*        gimp_flags_value_get_desc           (GFlagsClass *flags_class,
                                                          GFlagsValue *flags_value);

Retrieves the translated desc for a given flags_value.

@@ -586,9 +586,9 @@

-

+

gimp_flags_value_get_help ()

-
const gchar*        gimp_flags_value_get_help           (GFlagsClass *flags_class,
+
const gchar*        gimp_flags_value_get_help           (GFlagsClass *flags_class,
                                                          GFlagsValue *flags_value);

Retrieves the translated help for a given flags_value.

diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpversion.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpversion.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpversion.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpversion.html 2007-07-06 20:36:31.000000000 +0200 @@ -21,16 +21,16 @@
- + Description

-gimputils +gimputils

gimputils — Utilities of general interest

GIMP Base Library Reference Manual Next
Top +
Top  |  - Description
- + Description

-gimpversion +gimpversion

gimpversion — Macros and constants useful for determining GIMP's version number and capabilities.

@@ -52,7 +52,7 @@
-

Description

+

Description

Macros and constants useful for determining GIMP's version number and capabilities. @@ -60,11 +60,11 @@

-

Details

+

Details

-

+

GIMP_MAJOR_VERSION

-
#define GIMP_MAJOR_VERSION                              (2)
+
#define GIMP_MAJOR_VERSION                              (2)
 

@@ -72,9 +72,9 @@


-

+

GIMP_MINOR_VERSION

-
#define GIMP_MINOR_VERSION                              (2)
+
#define GIMP_MINOR_VERSION                              (2)
 

@@ -82,9 +82,9 @@


-

+

GIMP_MICRO_VERSION

-
#define GIMP_MICRO_VERSION                              (15)
+
#define GIMP_MICRO_VERSION                              (16)
 

@@ -92,9 +92,9 @@


-

+

GIMP_VERSION

-
#define GIMP_VERSION                                    "2.2.15"
+
#define GIMP_VERSION                                    "2.2.16"
 

@@ -102,9 +102,9 @@


-

+

GIMP_API_VERSION

-
#define GIMP_API_VERSION                                "2.0"
+
#define GIMP_API_VERSION                                "2.0"
 

Since: GIMP 2.2 @@ -112,9 +112,9 @@


-

+

GIMP_CHECK_VERSION()

-
#define             GIMP_CHECK_VERSION(major, minor, micro)
+
#define             GIMP_CHECK_VERSION(major, minor, micro)

diff -uraN gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpwire.html gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpwire.html --- gimp-2.2.15/devel-docs/libgimpbase/html/libgimpbase-gimpwire.html 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/html/libgimpbase-gimpwire.html 2007-07-06 20:36:31.000000000 +0200 @@ -20,16 +20,16 @@
GIMP Base Library Reference Manual  
Top +
Top  |  - Description

-gimpwire +gimpwire

gimpwire — The lowlevel I/O protocol used for communication between GIMP and it's plug-ins.

@@ -125,7 +125,7 @@
-

Description

+

Description

The lowlevel I/O protocol used for communication between GIMP and it's plug-ins. @@ -133,11 +133,11 @@

-

Details

+

Details

-

+

WireMessage

-
typedef struct {
+
typedef struct {
   guint32  type;
   gpointer data;
 } WireMessage;
@@ -148,9 +148,9 @@
 

-

+

WireReadFunc ()

-
void                (*WireReadFunc)                     (GIOChannel *channel,
+
void                (*WireReadFunc)                     (GIOChannel *channel,
                                                          WireMessage *msg,
                                                          gpointer user_data);

@@ -181,9 +181,9 @@


-

+

WireWriteFunc ()

-
void                (*WireWriteFunc)                    (GIOChannel *channel,
+
void                (*WireWriteFunc)                    (GIOChannel *channel,
                                                          WireMessage *msg,
                                                          gpointer user_data);

@@ -214,9 +214,9 @@


-

+

WireDestroyFunc ()

-
void                (*WireDestroyFunc)                  (WireMessage *msg);
+
void                (*WireDestroyFunc)                  (WireMessage *msg);

@@ -233,9 +233,9 @@

-

+

WireIOFunc ()

-
gboolean            (*WireIOFunc)                       (GIOChannel *channel,
+
gboolean            (*WireIOFunc)                       (GIOChannel *channel,
                                                          guint8 *buf,
                                                          gulong count,
                                                          gpointer user_data);
@@ -277,9 +277,9 @@

-

+

WireFlushFunc ()

-
gboolean            (*WireFlushFunc)                    (GIOChannel *channel,
+
gboolean            (*WireFlushFunc)                    (GIOChannel *channel,
                                                          gpointer user_data);

@@ -309,9 +309,9 @@


-

+

wire_register ()

-
void                wire_register                       (guint32 type,
+
void                wire_register                       (guint32 type,
                                                          WireReadFunc read_func,
                                                          WireWriteFunc write_func,
                                                          WireDestroyFunc destroy_func);
@@ -348,9 +348,9 @@

-

+

wire_set_reader ()

-
void                wire_set_reader                     (WireIOFunc read_func);
+
void                wire_set_reader                     (WireIOFunc read_func);

@@ -367,9 +367,9 @@

-

+

wire_set_writer ()

-
void                wire_set_writer                     (WireIOFunc write_func);
+
void                wire_set_writer                     (WireIOFunc write_func);

@@ -386,9 +386,9 @@

-

+

wire_set_flusher ()

-
void                wire_set_flusher                    (WireFlushFunc flush_func);
+
void                wire_set_flusher                    (WireFlushFunc flush_func);

@@ -405,9 +405,9 @@

-

+

wire_read ()

-
gboolean            wire_read                           (GIOChannel *channel,
+
gboolean            wire_read                           (GIOChannel *channel,
                                                          guint8 *buf,
                                                          gsize count,
                                                          gpointer user_data);
@@ -449,9 +449,9 @@

-

+

wire_write ()

-
gboolean            wire_write                          (GIOChannel *channel,
+
gboolean            wire_write                          (GIOChannel *channel,
                                                          guint8 *buf,
                                                          gsize count,
                                                          gpointer user_data);
@@ -493,9 +493,9 @@

-

+

wire_flush ()

-
gboolean            wire_flush                          (GIOChannel *channel,
+
gboolean            wire_flush                          (GIOChannel *channel,
                                                          gpointer user_data);

@@ -525,9 +525,9 @@


-

+

wire_error ()

-
gboolean            wire_error                          (void);
+
gboolean            wire_error                          (void);

@@ -544,18 +544,18 @@

-

+

wire_clear_error ()

-
void                wire_clear_error                    (void);
+
void                wire_clear_error                    (void);


-

+

wire_read_msg ()

-
gboolean            wire_read_msg                       (GIOChannel *channel,
+
gboolean            wire_read_msg                       (GIOChannel *channel,
                                                          WireMessage *msg,
                                                          gpointer user_data);

@@ -591,9 +591,9 @@


-

+

wire_write_msg ()

-
gboolean            wire_write_msg                      (GIOChannel *channel,
+
gboolean            wire_write_msg                      (GIOChannel *channel,
                                                          WireMessage *msg,
                                                          gpointer user_data);

@@ -629,9 +629,9 @@


-

+

wire_destroy ()

-
void                wire_destroy                        (WireMessage *msg);
+
void                wire_destroy                        (WireMessage *msg);

@@ -648,9 +648,9 @@

-

+

wire_read_int32 ()

-
gboolean            wire_read_int32                     (GIOChannel *channel,
+
gboolean            wire_read_int32                     (GIOChannel *channel,
                                                          guint32 *data,
                                                          gint count,
                                                          gpointer user_data);
@@ -692,9 +692,9 @@

-

+

wire_read_int16 ()

-
gboolean            wire_read_int16                     (GIOChannel *channel,
+
gboolean            wire_read_int16                     (GIOChannel *channel,
                                                          guint16 *data,
                                                          gint count,
                                                          gpointer user_data);
@@ -736,9 +736,9 @@

-

+

wire_read_int8 ()

-
gboolean            wire_read_int8                      (GIOChannel *channel,
+
gboolean            wire_read_int8                      (GIOChannel *channel,
                                                          guint8 *data,
                                                          gint count,
                                                          gpointer user_data);
@@ -780,9 +780,9 @@

-

+

wire_read_double ()

-
gboolean            wire_read_double                    (GIOChannel *channel,
+
gboolean            wire_read_double                    (GIOChannel *channel,
                                                          gdouble *data,
                                                          gint count,
                                                          gpointer user_data);
@@ -824,9 +824,9 @@

-

+

wire_read_string ()

-
gboolean            wire_read_string                    (GIOChannel *channel,
+
gboolean            wire_read_string                    (GIOChannel *channel,
                                                          gchar **data,
                                                          gint count,
                                                          gpointer user_data);
@@ -868,9 +868,9 @@

-

+

wire_write_int32 ()

-
gboolean            wire_write_int32                    (GIOChannel *channel,
+
gboolean            wire_write_int32                    (GIOChannel *channel,
                                                          guint32 *data,
                                                          gint count,
                                                          gpointer user_data);
@@ -912,9 +912,9 @@

-

+

wire_write_int16 ()

-
gboolean            wire_write_int16                    (GIOChannel *channel,
+
gboolean            wire_write_int16                    (GIOChannel *channel,
                                                          guint16 *data,
                                                          gint count,
                                                          gpointer user_data);
@@ -956,9 +956,9 @@

-

+

wire_write_int8 ()

-
gboolean            wire_write_int8                     (GIOChannel *channel,
+
gboolean            wire_write_int8                     (GIOChannel *channel,
                                                          guint8 *data,
                                                          gint count,
                                                          gpointer user_data);
@@ -1000,9 +1000,9 @@

-

+

wire_write_double ()

-
gboolean            wire_write_double                   (GIOChannel *channel,
+
gboolean            wire_write_double                   (GIOChannel *channel,
                                                          gdouble *data,
                                                          gint count,
                                                          gpointer user_data);
@@ -1044,9 +1044,9 @@

-

+

wire_write_string ()

-
gboolean            wire_write_string                   (GIOChannel *channel,
+
gboolean            wire_write_string                   (GIOChannel *channel,
                                                          gchar **data,
                                                          gint count,
                                                          gpointer user_data);
@@ -1088,7 +1088,7 @@
-

See Also

+

See Also

libgimp-gimpprotocol

diff -uraN gimp-2.2.15/devel-docs/libgimpbase/xml/gimpversion.xml gimp-2.2.16/devel-docs/libgimpbase/xml/gimpversion.xml --- gimp-2.2.15/devel-docs/libgimpbase/xml/gimpversion.xml 2007-05-26 16:32:19.000000000 +0200 +++ gimp-2.2.16/devel-docs/libgimpbase/xml/gimpversion.xml 2007-07-06 20:36:31.000000000 +0200 @@ -67,14 +67,14 @@ <anchor id="GIMP-MICRO-VERSION:CAPS" role="macro"/>GIMP_MICRO_VERSION -GIMP_MICRO_VERSION#define GIMP_MICRO_VERSION (15) +GIMP_MICRO_VERSION#define GIMP_MICRO_VERSION (16) <anchor id="GIMP-VERSION:CAPS" role="macro"/>GIMP_VERSION -GIMP_VERSION#define GIMP_VERSION "2.2.15" +GIMP_VERSION#define GIMP_VERSION "2.2.16" diff -uraN gimp-2.2.15/libgimpbase/gimpversion.h gimp-2.2.16/libgimpbase/gimpversion.h --- gimp-2.2.15/libgimpbase/gimpversion.h 2007-05-26 16:13:23.000000000 +0200 +++ gimp-2.2.16/libgimpbase/gimpversion.h 2007-07-06 10:21:53.000000000 +0200 @@ -11,8 +11,8 @@ #define GIMP_MAJOR_VERSION (2) #define GIMP_MINOR_VERSION (2) -#define GIMP_MICRO_VERSION (15) -#define GIMP_VERSION "2.2.15" +#define GIMP_MICRO_VERSION (16) +#define GIMP_VERSION "2.2.16" #define GIMP_API_VERSION "2.0" #define GIMP_CHECK_VERSION(major, minor, micro) \ (GIMP_MAJOR_VERSION > (major) || \ diff -uraN gimp-2.2.15/NEWS gimp-2.2.16/NEWS --- gimp-2.2.15/NEWS 2007-05-26 16:10:46.000000000 +0200 +++ gimp-2.2.16/NEWS 2007-07-06 10:19:22.000000000 +0200 @@ -6,6 +6,17 @@ released as GIMP version 2.4. +Bugs fixed in GIMP 2.2.16 +========================= + +- improved input value validation in several file plug-ins (bug #453973) +- improved handling of corrupt or invalid XCF files +- guard against integer overflows in several file plug-ins (bug #451379) +- fixed handling of background alpha channel in XCF files (bug #443097) +- improved forward compatibility of the config parser +- fixed crash when previewing some animated brushes (bug #446005) + + Bugs fixed in GIMP 2.2.15 ========================= diff -uraN gimp-2.2.15/plug-ins/bmp/bmpread.c gimp-2.2.16/plug-ins/bmp/bmpread.c --- gimp-2.2.15/plug-ins/bmp/bmpread.c 2007-04-17 23:11:13.000000000 +0200 +++ gimp-2.2.16/plug-ins/bmp/bmpread.c 2007-07-06 10:19:21.000000000 +0200 @@ -390,6 +390,9 @@ Grey, masks); + if (image_ID < 0) + return -1; + if (Bitmap_Head.biXPels > 0 && Bitmap_Head.biYPels > 0) { /* Fixed up from scott@asofyet's changes last year, njl195 */ @@ -482,10 +485,20 @@ break; default: - g_message (_("Unrecognized or invalid BMP compression format.")); + g_message (_("Unsupported or invalid bitdepth.")); return -1; } + if ((width < 0) || (width > GIMP_MAX_IMAGE_SIZE)) + { + g_message (_("Unsupported or invalid image width: %d"), width); + return -1; + } + if ((height < 0) || (height > GIMP_MAX_IMAGE_SIZE)) + { + g_message (_("Unsupported or invalid image height: %d"), height); + return -1; + } image = gimp_image_new (width, height, base_type); layer = gimp_layer_new (image, _("Background"), width, height, diff -uraN gimp-2.2.15/plug-ins/common/dicom.c gimp-2.2.16/plug-ins/common/dicom.c --- gimp-2.2.15/plug-ins/common/dicom.c 2007-04-17 23:11:23.000000000 +0200 +++ gimp-2.2.16/plug-ins/common/dicom.c 2007-07-06 10:19:22.000000000 +0200 @@ -42,7 +42,7 @@ /* Declare local data types */ typedef struct _DicomInfo { - gint width, height; /* The size of the image */ + guint width, height; /* The size of the image */ gint maxval; /* For 16 and 24 bit image files, the max value which we need to normalize to */ gint samples_per_pixel; /* Number of image planes (0 for pbm) */ @@ -275,8 +275,8 @@ gchar *temp; gchar buf[500]; /* buffer for random things like scanning */ DicomInfo *dicominfo; - gint width = 0; - gint height = 0; + guint width = 0; + guint height = 0; gint samples_per_pixel = 0; gint bpp = 0; guint8 *pix_buf = NULL; @@ -406,6 +406,15 @@ if (tag == 0xFFFEE000) continue; + /* Even for pixel data, we don't handle very large element + lengths */ + + if (element_length >= (G_MAXUINT - 6)) + { + g_error ("'%s' seems to have an incorrect value field length.", + gimp_filename_to_utf8 (filename)); + } + /* Read contents. Allocate a bit more to make room for casts to int below. */ value = g_new0 (guint8, element_length + 4); @@ -466,6 +475,12 @@ } } + if ((width > GIMP_MAX_IMAGE_SIZE) || (height > GIMP_MAX_IMAGE_SIZE)) + { + g_error ("'%s' has a larger image size than GIMP can handle.", + gimp_filename_to_utf8 (filename)); + } + dicominfo->width = width; dicominfo->height = height; dicominfo->bpp = bpp; diff -uraN gimp-2.2.15/plug-ins/common/pcx.c gimp-2.2.16/plug-ins/common/pcx.c --- gimp-2.2.15/plug-ins/common/pcx.c 2007-04-17 23:11:24.000000000 +0200 +++ gimp-2.2.16/plug-ins/common/pcx.c 2007-07-06 10:19:22.000000000 +0200 @@ -328,6 +328,23 @@ width = qtohs (pcx_header.x2) - offset_x + 1; height = qtohs (pcx_header.y2) - offset_y + 1; + if ((width < 0) || (width > GIMP_MAX_IMAGE_SIZE)) + { + g_message (_("Unsupported or invalid image width: %d"), width); + return -1; + } + if ((height < 0) || (height > GIMP_MAX_IMAGE_SIZE)) + { + g_message (_("Unsupported or invalid image height: %d"), height); + return -1; + } + if (qtohs (pcx_header.bytesperline) <= 0) + { + g_message (_("Invalid number of bytes per line: %hd"), + qtohs (pcx_header.bytesperline)); + return -1; + } + if (pcx_header.planes == 3 && pcx_header.bpp == 8) { image= gimp_image_new (width, height, GIMP_RGB); diff -uraN gimp-2.2.15/plug-ins/common/pnm.c gimp-2.2.16/plug-ins/common/pnm.c --- gimp-2.2.15/plug-ins/common/pnm.c 2007-04-17 23:11:23.000000000 +0200 +++ gimp-2.2.16/plug-ins/common/pnm.c 2007-07-06 10:19:22.000000000 +0200 @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: pnm.c 15909 2004-12-12 17:18:03Z weskaggs $ */ +/* $Id: pnm.c 22868 2007-07-05 13:13:58Z raphael $ */ /* * The pnm reading and writing code was written from scratch by Erik Nygren @@ -487,6 +487,8 @@ pnminfo->xres = g_ascii_isdigit(*buf)?atoi(buf):0; CHECK_FOR_ERROR(pnminfo->xres<=0, pnminfo->jmpbuf, _("PNM: Invalid X resolution.")); + CHECK_FOR_ERROR (pnminfo->xres > GIMP_MAX_IMAGE_SIZE, pnminfo->jmpbuf, + _("Image width is larger than GIMP can handle.")); pnmscanner_gettoken(scan, buf, BUFLEN); CHECK_FOR_ERROR(pnmscanner_eof(scan), pnminfo->jmpbuf, @@ -494,6 +496,8 @@ pnminfo->yres = g_ascii_isdigit(*buf)?atoi(buf):0; CHECK_FOR_ERROR(pnminfo->yres<=0, pnminfo->jmpbuf, _("PNM: Invalid Y resolution.")); + CHECK_FOR_ERROR (pnminfo->yres > GIMP_MAX_IMAGE_SIZE, pnminfo->jmpbuf, + _("Image height is larger than GIMP can handle.")); if (pnminfo->np != 0) /* pbm's don't have a maxval field */ { @@ -554,6 +558,7 @@ char buf[BUFLEN]; np = (info->np)?(info->np):1; + /* No overflow as long as gimp_tile_height() < 2730 = 2^(31 - 18) / 3 */ data = g_malloc (gimp_tile_height () * info->xres * np); /* Buffer reads to increase performance */ diff -uraN gimp-2.2.15/plug-ins/common/psd.c gimp-2.2.16/plug-ins/common/psd.c --- gimp-2.2.15/plug-ins/common/psd.c 2007-04-17 23:11:24.000000000 +0200 +++ gimp-2.2.16/plug-ins/common/psd.c 2007-07-06 10:53:53.000000000 +0200 @@ -396,7 +396,7 @@ static void xfread(FILE *fd, void *buf, long len, gchar *why); static void xfread_interlaced(FILE *fd, guchar *buf, long len, gchar *why, gint step); -static void read_whole_file(FILE *fd); +static void read_whole_file(FILE *fd, const gchar *name); static void reshuffle_cmap(guchar *map256); static gchar* getpascalstring(FILE *fd, gchar *why); static gchar* getstring(size_t n, FILE * fd, gchar *why); @@ -954,6 +954,17 @@ layer->width = right - left; layer->height = bottom - top; + if ((layer->height > GIMP_MAX_IMAGE_SIZE) || + (layer->width > GIMP_MAX_IMAGE_SIZE)) + { + g_error ("Input file has a larger layer size than GIMP can handle."); + } + + if (layer->width > (G_MAXUINT / layer->height)) + { + g_error ("Input file has a larger layer size than GIMP can handle."); + } + IFDBG printf("\t\t\t\tLayer extents: (%d,%d) -> (%d,%d)\n", left,top,right,bottom); @@ -963,6 +974,13 @@ IFDBG printf("\t\t\t\tNumber of channels: %d\n", (int)layer->num_channels); + if ((layer->num_channels < 0) || (layer->num_channels > 56)) + { + g_message ("Error: invalid number of channels in layer %d: %d", + layernum, layer->num_channels); + gimp_quit(); + } + if (layer->num_channels) { layer->channel = g_new(PSDchannel, layer->num_channels); @@ -1063,6 +1081,17 @@ layer->lm_width = right - left; layer->lm_height = bottom - top; + if ((layer->lm_height > GIMP_MAX_IMAGE_SIZE) || + (layer->lm_width > GIMP_MAX_IMAGE_SIZE)) + { + g_error ("Input file has a larger layer mask size than GIMP can handle."); + } + + if (layer->lm_width > (G_MAXUINT / layer->lm_height)) + { + g_error ("Input file has a larger layer mask size than GIMP can handle."); + } + getglong(fd, "lmask data throw"); (*offset) += 4; @@ -1199,9 +1228,15 @@ compression = getgshort(fd, "layer channel compression type"); offset+=2; - width = channel->width; + width = channel->width; height = channel->height; + if (width > G_MAXINT16 || height > G_MAXINT16) + { + g_message ("Error: Invalid channel dimensions"); + gimp_quit (); + } + IFDBG { printf("\t\t\tLayer (%d) Channel (%d:%d) Compression: %d (%s)\n", @@ -1787,7 +1822,7 @@ gimp_progress_init (name_buf); g_free (name_buf); - read_whole_file (fd); + read_whole_file (fd, name); if (psd_image.num_layers > 0) /* PS3-style */ { @@ -2767,7 +2802,7 @@ } static void -read_whole_file(FILE * fd) +read_whole_file(FILE * fd, const gchar *filename) { guint16 w; gint32 pos; @@ -2777,9 +2812,36 @@ xfread(fd, &PSDheader.signature, 4, "signature"); PSDheader.version = getgshort(fd, "version"); xfread(fd, &dummy, 6, "reserved"); + PSDheader.channels = getgshort(fd, "channels"); + + /* Photoshop CS (version 8) supports a maximum of 56 channels */ + + if (PSDheader.channels > 56) + { + g_error ("'%s' has more channels than GIMP can handle.", + gimp_filename_to_utf8 (filename)); + } + PSDheader.rows = getglong(fd, "rows"); PSDheader.columns = getglong(fd, "columns"); + + /* Photoshop CS (version 8) supports 300000 x 300000, but this + is currently larger than GIMP_MAX_IMAGE_SIZE */ + + if ((PSDheader.rows > GIMP_MAX_IMAGE_SIZE) || + (PSDheader.columns > GIMP_MAX_IMAGE_SIZE)) + { + g_error ("'%s' has a larger image size than GIMP can handle.", + gimp_filename_to_utf8 (filename)); + } + + if (PSDheader.columns > (G_MAXUINT / PSDheader.rows)) + { + g_error ("'%s' has a larger image size than GIMP can handle.", + gimp_filename_to_utf8 (filename)); + } + PSDheader.bpp = getgshort(fd, "depth"); PSDheader.mode = getgshort(fd, "mode"); diff -uraN gimp-2.2.15/plug-ins/common/psp.c gimp-2.2.16/plug-ins/common/psp.c --- gimp-2.2.15/plug-ins/common/psp.c 2007-04-17 23:11:24.000000000 +0200 +++ gimp-2.2.16/plug-ins/common/psp.c 2007-07-06 10:19:22.000000000 +0200 @@ -479,7 +479,6 @@ || (major < 4 && fread (total_len, 4, 1, f) < 1)) { g_message ("Error reading block header"); - fclose (f); return -1; } if (memcmp (buf, "~BK\0", 4) != 0) @@ -488,8 +487,6 @@ g_message ("Invalid block header at %ld", header_start); else g_message ("Invalid block header"); - - fclose (f); return -1; } @@ -524,7 +521,6 @@ if (init_len < 38 || total_len < 38) { g_message ("Invalid general image attribute chunk size"); - fclose (f); return -1; } @@ -544,7 +540,6 @@ || fread (&ia->layer_count, 2, 1, f) < 1) { g_message ("Error reading general image attribute block"); - fclose (f); return -1; } ia->width = GUINT32_FROM_LE (ia->width); @@ -559,7 +554,6 @@ if (ia->compression > PSP_COMP_LZ77) { g_message ("Unknown compression type %d", ia->compression); - fclose (f); return -1; } @@ -567,7 +561,6 @@ if (ia->depth != 24) { g_message ("Unsupported bit depth %d", ia->depth); - fclose (f); return -1; } @@ -618,15 +611,11 @@ || fread (&length, 4, 1, f) < 1) { g_message ("Error reading creator keyword chunk"); - fclose (f); - gimp_image_delete (image_ID); return -1; } if (memcmp (buf, "~FL\0", 4) != 0) { g_message ("Invalid keyword chunk header"); - fclose (f); - gimp_image_delete (image_ID); return -1; } keyword = GUINT16_FROM_LE (keyword); @@ -641,8 +630,6 @@ if (fread (string, length, 1, f) < 1) { g_message ("Error reading creator keyword data"); - fclose (f); - gimp_image_delete (image_ID); return -1; } switch (keyword) @@ -666,8 +653,6 @@ if (fread (&dword, 4, 1, f) < 1) { g_message ("Error reading creator keyword data"); - fclose (f); - gimp_image_delete (image_ID); return -1; } switch (keyword) @@ -685,7 +670,6 @@ default: if (try_fseek (f, length, SEEK_CUR) < 0) { - gimp_image_delete (image_ID); return -1; } break; @@ -971,7 +955,6 @@ if (inflateInit (&zstream) != Z_OK) { g_message ("zlib error"); - fclose (f); return -1; } if (bytespp == 1) @@ -986,7 +969,6 @@ { g_message ("zlib error"); inflateEnd (&zstream); - fclose (f); return -1; } inflateEnd (&zstream); @@ -1019,7 +1001,7 @@ long block_start, sub_block_start, channel_start; gint sub_id; guint32 sub_init_len, sub_total_len; - gchar *name; + gchar *name = NULL; guint16 namelen; guchar type, opacity, blend_mode, visibility, transparency_protected; guchar link_group_id, mask_linked, mask_disabled; @@ -1044,16 +1026,12 @@ /* Read the layer sub-block header */ sub_id = read_block_header (f, &sub_init_len, &sub_total_len); if (sub_id == -1) - { - gimp_image_delete (image_ID); - return -1; - } + return -1; + if (sub_id != PSP_LAYER_BLOCK) { g_message ("Invalid layer sub-block %s, should be LAYER", block_name (sub_id)); - fclose (f); - gimp_image_delete (image_ID); return -1; } @@ -1084,10 +1062,10 @@ || fread (&channel_count, 2, 1, f) < 1) { g_message ("Error reading layer information chunk"); - fclose (f); - gimp_image_delete (image_ID); + g_free (name); return -1; } + name[namelen] = 0; type = PSP_LAYER_NORMAL; /* ??? */ } @@ -1095,6 +1073,7 @@ { name = g_malloc (257); name[256] = 0; + if (fread (name, 256, 1, f) < 1 || fread (&type, 1, 1, f) < 1 || fread (&image_rect, 16, 1, f) < 1 @@ -1114,8 +1093,6 @@ { g_message ("Error reading layer information chunk"); g_free (name); - fclose (f); - gimp_image_delete (image_ID); return -1; } } @@ -1143,6 +1120,14 @@ width = saved_image_rect[2] - saved_image_rect[0]; height = saved_image_rect[3] - saved_image_rect[1]; + if ((width < 0) || (width > GIMP_MAX_IMAGE_SIZE) /* w <= 2^18 */ + || (height < 0) || (height > GIMP_MAX_IMAGE_SIZE) /* h <= 2^18 */ + || ((width / 256) * (height / 256) >= 8192)) /* w * h < 2^29 */ + { + g_message ("Invalid layer dimensions: %dx%d", width, height); + return -1; + } + IFDBG(2) g_message ("layer: %s %dx%d (%dx%d) @%d,%d opacity %d blend_mode %s " "%d bitmaps %d channels", @@ -1191,8 +1176,6 @@ if (layer_ID == -1) { g_message ("Error creating layer"); - fclose (f); - gimp_image_delete (image_ID); return -1; } @@ -1212,16 +1195,17 @@ if (major < 4) if (try_fseek (f, sub_block_start + sub_init_len, SEEK_SET) < 0) { - gimp_image_delete (image_ID); return -1; } pixel = g_malloc0 (height * width * bytespp); if (null_layer) - pixels = NULL; + { + pixels = NULL; + } else { - pixels = g_new(guchar *, height); + pixels = g_new (guchar *, height); for (i = 0; i < height; i++) pixels[i] = pixel + width * bytespp * i; } @@ -1247,8 +1231,6 @@ { g_message ("Invalid layer sub-block %s, should be CHANNEL", block_name (sub_id)); - fclose (f); - gimp_image_delete (image_ID); return -1; } @@ -1263,8 +1245,6 @@ || fread (&channel_type, 2, 1, f) < 1) { g_message ("Error reading channel information chunk"); - fclose (f); - gimp_image_delete (image_ID); return -1; } @@ -1277,8 +1257,6 @@ { g_message ("Invalid bitmap type %d in channel information chunk", bitmap_type); - fclose (f); - gimp_image_delete (image_ID); return -1; } @@ -1286,8 +1264,6 @@ { g_message ("Invalid channel type %d in channel information chunk", channel_type); - fclose (f); - gimp_image_delete (image_ID); return -1; } @@ -1305,7 +1281,6 @@ if (major < 4) if (try_fseek (f, channel_start + channel_init_len, SEEK_SET) < 0) { - gimp_image_delete (image_ID); return -1; } @@ -1313,13 +1288,11 @@ if (read_channel_data (f, ia, pixels, bytespp, offset, drawable, compressed_len) == -1) { - gimp_image_delete (image_ID); return -1; } if (try_fseek (f, channel_start + channel_total_len, SEEK_SET) < 0) { - gimp_image_delete (image_ID); return -1; } } @@ -1332,9 +1305,9 @@ g_free (pixels); g_free (pixel); } + if (try_fseek (f, block_start + total_len, SEEK_SET) < 0) { - gimp_image_delete (image_ID); return -1; } @@ -1368,10 +1341,9 @@ || fread (&selection_mode, 4, 1, f) < 1) { g_message ("Error reading tube data chunk"); - fclose (f); - gimp_image_delete (image_ID); return -1; } + name[513] = 0; version = GUINT16_FROM_LE (version); params.step = GUINT32_FROM_LE (step_size); @@ -1465,18 +1437,18 @@ || fread (&minor, 2, 1, f) < 1) { g_message ("Error reading file header"); - fclose (f); - return -1; + goto error; } + if (memcmp (buf, "Paint Shop Pro Image File\n\032\0\0\0\0\0", 32) != 0) { g_message ("Incorrect file signature"); - fclose (f); - return -1; + goto error; } major = GUINT16_FROM_LE (major); minor = GUINT16_FROM_LE (minor); + /* I only have the documentation for file format version 3.0, * but PSP 6 writes version 4.0. Let's hope it's backwards compatible. * Earlier versions probably don't have all the fields I expect @@ -1487,8 +1459,7 @@ g_message ("Unsupported PSP file format version " "%d.%d, only knows 3.0 (and later?)", major, minor); - fclose (f); - return -1; + goto error; } else if (major == 3) ; /* OK */ @@ -1501,8 +1472,7 @@ { g_message ("Unsupported PSP file format version %d.%d", major, minor); - fclose (f); - return -1; + goto error; } /* Read all the blocks */ @@ -1520,12 +1490,13 @@ if (block_number != 0) { g_message ("Duplicate General Image Attributes block"); - fclose (f); - return -1; + goto error; } if (read_general_image_attribute_block (f, block_init_len, block_total_len, &ia) == -1) - return -1; + { + goto error; + } IFDBG(2) g_message ("%d dpi %dx%d %s", (int) ia.resolution, @@ -1535,7 +1506,9 @@ image_ID = gimp_image_new (ia.width, ia.height, ia.greyscale ? GIMP_GRAY : GIMP_RGB); if (image_ID == -1) - return -1; + { + goto error; + } gimp_image_set_filename (image_ID, filename); @@ -1546,15 +1519,14 @@ if (block_number == 0) { g_message ("Missing General Image Attributes block"); - fclose (f); - gimp_image_delete (image_ID); - return -1; + goto error; } + switch (id) { case PSP_CREATOR_BLOCK: if (read_creator_block (f, image_ID, block_total_len, &ia) == -1) - return -1; + goto error; break; case PSP_COLOR_BLOCK: @@ -1562,7 +1534,7 @@ case PSP_LAYER_START_BLOCK: if (read_layer_block (f, image_ID, block_total_len, &ia) == -1) - return -1; + goto error; break; case PSP_SELECTION_BLOCK: @@ -1579,7 +1551,7 @@ case PSP_TUBE_BLOCK: if (read_tube_block (f, image_ID, block_total_len, &ia) == -1) - return -1; + goto error; break; case PSP_LAYER_BLOCK: @@ -1600,17 +1572,17 @@ break; if (try_fseek (f, block_start + block_total_len, SEEK_SET) < 0) - { - gimp_image_delete (image_ID); - return -1; - } + goto error; + block_number++; } if (id == -1) { + error: fclose (f); - gimp_image_delete (image_ID); + if (image_ID != -1) + gimp_image_delete (image_ID); return -1; } diff -uraN gimp-2.2.15/plug-ins/common/sunras.c gimp-2.2.16/plug-ins/common/sunras.c --- gimp-2.2.15/plug-ins/common/sunras.c 2007-05-26 16:10:46.000000000 +0200 +++ gimp-2.2.16/plug-ins/common/sunras.c 2007-07-06 11:29:35.000000000 +0200 @@ -401,6 +401,11 @@ return (-1); } + if ((sunhdr.l_ras_maplength < 0) || (sunhdr.l_ras_maplength > (256 * 3))) + { + g_error ("Map lengths greater than 256 entries are unsupported by GIMP."); + } + /* Is there a RGB colourmap ? */ if ((sunhdr.l_ras_maptype == 1) && (sunhdr.l_ras_maplength > 0)) { @@ -432,6 +437,38 @@ *4 + sunhdr.l_ras_maplength, SEEK_SET); } + if (sunhdr.l_ras_width <= 0) + { + g_message (_("'%s':\nNo image width specified"), + gimp_filename_to_utf8 (filename)); + fclose (ifp); + return (-1); + } + + if (sunhdr.l_ras_width > GIMP_MAX_IMAGE_SIZE) + { + g_message (_("'%s':\nImage width is larger than GIMP can handle"), + gimp_filename_to_utf8 (filename)); + fclose (ifp); + return (-1); + } + + if (sunhdr.l_ras_height <= 0) + { + g_message (_("'%s':\nNo image height specified"), + gimp_filename_to_utf8 (filename)); + fclose (ifp); + return (-1); + } + + if (sunhdr.l_ras_height > GIMP_MAX_IMAGE_SIZE) + { + g_message (_("'%s':\nImage height is larger than GIMP can handle"), + gimp_filename_to_utf8 (filename)); + fclose (ifp); + return (-1); + } + temp = g_strdup_printf (_("Opening '%s'..."), gimp_filename_to_utf8 (filename)); gimp_progress_init (temp); diff -uraN gimp-2.2.15/plug-ins/common/xbm.c gimp-2.2.16/plug-ins/common/xbm.c --- gimp-2.2.15/plug-ins/common/xbm.c 2007-04-17 23:11:23.000000000 +0200 +++ gimp-2.2.16/plug-ins/common/xbm.c 2007-07-06 10:19:22.000000000 +0200 @@ -806,21 +806,35 @@ return -1; } - if (width == 0) + if (width <= 0) { g_message (_("'%s':\nNo image width specified"), gimp_filename_to_utf8 (filename)); return -1; } - if (height == 0) + if (width > GIMP_MAX_IMAGE_SIZE) + { + g_message (_("'%s':\nImage width is larger than GIMP can handle"), + gimp_filename_to_utf8 (filename)); + return -1; + } + + if (height <= 0) { g_message (_("'%s':\nNo image height specified"), gimp_filename_to_utf8 (filename)); return -1; } - if (intbits == 0) + if (height > GIMP_MAX_IMAGE_SIZE) + { + g_message (_("'%s':\nImage height is larger than GIMP can handle"), + gimp_filename_to_utf8 (filename)); + return -1; + } + + if (intbits == 0) { g_message (_("'%s':\nNo image data type specified"), gimp_filename_to_utf8 (filename)); @@ -1059,7 +1073,7 @@ #ifdef VERBOSE if (verbose > 1) - printf ("TGA: writing %dx(%d+%d) pixel region\n", + printf ("XBM: writing %dx(%d+%d) pixel region\n", width, i, tileheight); #endif diff -uraN gimp-2.2.15/plug-ins/common/xwd.c gimp-2.2.16/plug-ins/common/xwd.c --- gimp-2.2.15/plug-ins/common/xwd.c 2007-04-17 23:11:23.000000000 +0200 +++ gimp-2.2.16/plug-ins/common/xwd.c 2007-07-06 10:19:22.000000000 +0200 @@ -472,6 +472,39 @@ } } + if (xwdhdr.l_pixmap_width <= 0) + { + g_message (_("'%s':\nNo image width specified"), + gimp_filename_to_utf8 (filename)); + fclose (ifp); + return (-1); + } + + if (xwdhdr.l_pixmap_width > GIMP_MAX_IMAGE_SIZE + || xwdhdr.l_bytes_per_line > GIMP_MAX_IMAGE_SIZE * 3) + { + g_message (_("'%s':\nImage width is larger than GIMP can handle"), + gimp_filename_to_utf8 (filename)); + fclose (ifp); + return (-1); + } + + if (xwdhdr.l_pixmap_height <= 0) + { + g_message (_("'%s':\nNo image height specified"), + gimp_filename_to_utf8 (filename)); + fclose (ifp); + return (-1); + } + + if (xwdhdr.l_pixmap_height > GIMP_MAX_IMAGE_SIZE) + { + g_message (_("'%s':\nImage height is larger than GIMP can handle"), + gimp_filename_to_utf8 (filename)); + fclose (ifp); + return (-1); + } + temp = g_strdup_printf (_("Opening '%s'..."), gimp_filename_to_utf8 (filename)); gimp_progress_init (temp);