GraphicsMagick: XCF: Avoid undefined behavior warning related to...
GraphicsMagick Commits <[email protected]>
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.5584.1690846033.8047.graphicsmagick-commit@lists.sourceforge.net> |
changeset fceb8821a954 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=fceb8821a954 summary: XCF: Avoid undefined behavior warning related to the number of layers diffstat: ChangeLog | 8 ++++++++ VisualMagick/installer/inc/version.isx | 4 ++-- coders/xcf.c | 15 ++++++++++----- magick/version.h | 4 ++-- www/Changelog.html | 10 ++++++++++ 5 files changed, 32 insertions(+), 9 deletions(-) diffs (114 lines): diff -r 2331fb1bd1da -r fceb8821a954 ChangeLog --- a/ChangeLog Sun Jul 30 11:39:59 2023 -0500 +++ b/ChangeLog Mon Jul 31 18:27:03 2023 -0500 @@ -1,3 +1,11 @@ +2023-07-31 Bob Friesenhahn <[email protected]> + + * coders/xcf.c (ReadXCFImage): Limit the maximum number of layers + to the range of 'long'. Adjust arithmetic/cast to avoid undefined + behavior warning. Resolves SourceForge issue #713 + "coders/xcf.c:1926:53: warning: iteration 9223372036854775806 + invokes undefined behavior". + 2023-07-30 Bob Friesenhahn <[email protected]> * NEWS.txt: Update the news! diff -r 2331fb1bd1da -r fceb8821a954 VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Sun Jul 30 11:39:59 2023 -0500 +++ b/VisualMagick/installer/inc/version.isx Mon Jul 31 18:27:03 2023 -0500 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020230730" -#define public MagickPackageReleaseDate "snapshot-20230730" +#define public MagickPackageVersionAddendum ".020230731" +#define public MagickPackageReleaseDate "snapshot-20230731" diff -r 2331fb1bd1da -r fceb8821a954 coders/xcf.c --- a/coders/xcf.c Sun Jul 30 11:39:59 2023 -0500 +++ b/coders/xcf.c Mon Jul 31 18:27:03 2023 -0500 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2020 GraphicsMagick Group +% Copyright (C) 2003-2023 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % % This program is covered by multiple licenses, which are described in @@ -28,7 +28,7 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% +% https://testing.developer.gimp.org/core/standards/xcf */ /* @@ -1730,6 +1730,11 @@ foundAllLayers = MagickTrue; else number_layers++; + + /* Check for too many layers */ + if (number_layers == (unsigned long) LONG_MAX) + ThrowReaderException(CorruptImageError,CorruptImage,image); + previous_offset=offset; } while ( !foundAllLayers ); @@ -1877,7 +1882,7 @@ long j; - for (j=number_layers-1; j>=0; j--) + for (j=(long) (number_layers-1); j>=0; j--) { /* BOGUS: need to consider layer blending modes!! */ if ( layer_info[j].visible ) /* only visible ones, please! */ @@ -1923,11 +1928,11 @@ */ image->next=layer_info[number_layers-2].image; layer_info[number_layers-2].image->previous=image; - for (j=(long) number_layers-2; j >= 0; j--) + for (j=(long) ((number_layers-2)); j >= 0; j--) { if (j > 0) layer_info[j].image->next=layer_info[j-1].image; - if (j < ((long) number_layers-1)) + if (j < ((long) (number_layers-1))) layer_info[j].image->previous=layer_info[j+1].image; layer_info[j].image->page.x = layer_info[j].offset_x; layer_info[j].image->page.y = layer_info[j].offset_y; diff -r 2331fb1bd1da -r fceb8821a954 magick/version.h --- a/magick/version.h Sun Jul 30 11:39:59 2023 -0500 +++ b/magick/version.h Mon Jul 31 18:27:03 2023 -0500 @@ -38,8 +38,8 @@ #define MagickLibVersion 0x272402 #define MagickLibVersionText "1.4" #define MagickLibVersionNumber 27,24,2 -#define MagickChangeDate "20230730" -#define MagickReleaseDate "snapshot-20230730" +#define MagickChangeDate "20230731" +#define MagickReleaseDate "snapshot-20230731" /* The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines diff -r 2331fb1bd1da -r fceb8821a954 www/Changelog.html --- a/www/Changelog.html Sun Jul 30 11:39:59 2023 -0500 +++ b/www/Changelog.html Mon Jul 31 18:27:03 2023 -0500 @@ -37,6 +37,16 @@ </div> <div class="document"> +<p>2023-07-31 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> +<blockquote> +<ul class="simple"> +<li><p>coders/xcf.c (ReadXCFImage): Limit the maximum number of layers +to the range of 'long'. Adjust arithmetic/cast to avoid undefined +behavior warning. Resolves SourceForge issue #713 +"coders/xcf.c:1926:53: warning: iteration 9223372036854775806 +invokes undefined behavior".</p></li> +</ul> +</blockquote> <p>2023-07-30 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> <blockquote> <ul class="simple">