GraphicsMagick: 5 new changesets
GraphicsMagick Commits <[email protected]> Fri, 05 Jul 2024 17:07:31 -0500
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.21255.1720217261.8076.graphicsmagick-commit@lists.sourceforge.net> |
changeset 1e2e1e97f834 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=1e2e1e97f834 summary: magick/tiff.c: Possible division by 0 fixed. changeset 5a86024b2a52 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=5a86024b2a52 summary: PixelSetQuantumColor() argument is now a const pointer. changeset 6a0c52c0b629 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=6a0c52c0b629 summary: Try to intuit better MinGW printf syntax based on host_vendor setting changeset c9d3e917d6d3 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=c9d3e917d6d3 summary: Remove mention of the dead MinGW at OSDN project. changeset 804a3a07dbe8 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=804a3a07dbe8 summary: ReadFITSImage(): Report an error if FITS frames have zero dimensions or contain no pixels. diffstat: ChangeLog | 40 ++++++++- VisualMagick/installer/inc/version.isx | 4 +- coders/fits.c | 24 ++++- coders/tiff.c | 15 ++- configure | 38 +++++--- configure.ac | 40 +++++--- magick/colormap.c | 4 +- magick/magick.c | 2 +- magick/version.h | 4 +- wand/pixel_wand.c | 113 ++++++++++++------------- wand/pixel_wand.h | 8 +- www/ChangeLog.html | 41 +++++++++- www/INSTALL-unix.html | 111 ++++++------------------ www/INSTALL-unix.rst | 115 ++++++------------------- www/contribute.html | 16 +- www/contribute.rst | 16 +- www/wand/pixel_wand.html | 146 +++++++++++++++++--------------- 17 files changed, 375 insertions(+), 362 deletions(-) diffs (truncated from 1685 to 500 lines): diff -r 491d8e1de716 -r 804a3a07dbe8 ChangeLog --- a/ChangeLog Thu Jun 27 17:16:18 2024 -0500 +++ b/ChangeLog Fri Jul 05 17:05:11 2024 -0500 @@ -1,3 +1,41 @@ +2024-07-05 Bob Friesenhahn <[email protected]> + + * coders/fits.c (ReadFITSImage): Report an error if FITS frames + have zero dimensions or contain no pixels. Addresses core issue + which resulted in oss-fuzz issue 69925: + "graphicsmagick:coder_TIFF_any_fuzzer: Floating-point-exception in + WriteTIFFImage". + + * www/INSTALL-unix.rst: Remove mention of the original MinGW which + became dead and unusable at OSDN a couple of years ago. It is not + even possible to download the installer program. The old version + at SourceForge is all which remains working. + +2024-07-04 Bob Friesenhahn <[email protected]> + + * configure.ac: Assume that targets matching *-w64-mingw* are + capable of supporting 'C99 printf syntax. + (INT64_F, UINT64_F, MAGICK_SIZE_T_F, MAGICK_SSIZE_T_F): Try to + intuit better MinGW printf syntax based on host_vendor setting. + + * wand/pixel_wand.c (ClonePixelWands): Eliminate GCC 14 + warning about MagickAllocateArray() argument order. + + * magick/magick.c (GetMagickInfoArray): Eliminate GCC 14 + warning about MagickAllocateArray() argument order. + + * magick/colormap.c (ReplaceImageColormap): Eliminate GCC 14 + warning about MagickAllocateArray() argument order. + + * wand/pixel_wand.c (PixelSetQuantumColor): Color argument is now + a const pointer. + * wand/pixel_wand.c Tidy and correct errors in the documentation + text. + +2024-06-28 Fojtik Jaroslav <[email protected]> + + * magick/tiff.c: Possible division by 0 fixed. + 2024-06-27 Bob Friesenhahn <[email protected]> * www/INSTALL-unix.rst: Add mention of --without-libzip. @@ -11,7 +49,7 @@ * www/formats.rst: Add an entry for HRZ format. -2024-06-24 Fojtik Jaroslav <[email protected]> +2024-06-26 Fojtik Jaroslav <[email protected]> * configure.ac: Typo fixed in library name. diff -r 491d8e1de716 -r 804a3a07dbe8 VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Thu Jun 27 17:16:18 2024 -0500 +++ b/VisualMagick/installer/inc/version.isx Fri Jul 05 17:05:11 2024 -0500 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020240627" -#define public MagickPackageReleaseDate "snapshot-20240627" +#define public MagickPackageVersionAddendum ".020240705" +#define public MagickPackageReleaseDate "snapshot-20240705" diff -r 491d8e1de716 -r 804a3a07dbe8 coders/fits.c --- a/coders/fits.c Thu Jun 27 17:16:18 2024 -0500 +++ b/coders/fits.c Fri Jul 05 17:05:11 2024 -0500 @@ -688,8 +688,28 @@ CloseBlob(image); - while (image->previous != (Image *) NULL) - image=image->previous; + /* + Verify frames + */ + image=GetFirstImageInList(image); + do + { + if ((image->columns == 0) || (image->rows == 0) || !GetPixelCachePresent(image)) + { + if (logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + "Scene %lu: Image columns=%lu, rows=%lu, pixel-cache=%s", + image->scene, image->columns, image->rows, + GetPixelCachePresent(image) ? "Present" : "Missing!"); + ThrowReaderException(CorruptImageError,ImproperImageHeader,image); + } + if (image->next) + image=image->next; + else + break; + } while (1); + + image=GetFirstImageInList(image); if (logging) (void)LogMagickEvent(CoderEvent,GetMagickModule(),"return"); return(image); diff -r 491d8e1de716 -r 804a3a07dbe8 coders/tiff.c --- a/coders/tiff.c Thu Jun 27 17:16:18 2024 -0500 +++ b/coders/tiff.c Fri Jul 05 17:05:11 2024 -0500 @@ -6105,12 +6105,17 @@ } } - if (scanline_size < (tsize_t) bytes_per_strip_target) - rows_per_strip *= (uint32) ((size_t) bytes_per_strip_target / ((size_t) rows_per_strip*scanline_size)); - if (rows_per_strip > image->rows) - rows_per_strip=image->rows; - if (rows_per_strip < 1) + if(rows_per_strip==0 || scanline_size==0) rows_per_strip=1; + else + { + if (scanline_size < (tsize_t) bytes_per_strip_target) + rows_per_strip *= (uint32) ((size_t) bytes_per_strip_target / ((size_t) rows_per_strip*scanline_size)); + if (rows_per_strip > image->rows) + rows_per_strip=image->rows; + if (rows_per_strip < 1) + rows_per_strip=1; + } /* It seems that some programs fail to handle more than 32K or diff -r 491d8e1de716 -r 804a3a07dbe8 configure --- a/configure Thu Jun 27 17:16:18 2024 -0500 +++ b/configure Fri Jul 05 17:05:11 2024 -0500 @@ -21518,8 +21518,13 @@ fi case "${host_os}" in mingw* ) - INT64_F='"I64"' - ;; + # Note that config.guess sets vendor to 'pc' but mingw-w64 + # config.site overrides it and sets host_vendor to 'w64'. + case "${host_vendor}" in + 'pc' ) # Original MinGW, use Microsoft syntax + INT64_F='"I64"' + ;; + esac esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INT64_T" >&5 $as_echo "$INT64_T" >&6; } @@ -21542,8 +21547,11 @@ fi case "${host_os}" in mingw* ) - UINT64_F='"I64"' - ;; + case "${host_vendor}" in + 'pc' ) # Original MinGW, use Microsoft syntax + UINT64_F='"I64"' + ;; + esac esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UINT64_T" >&5 $as_echo "$UINT64_T" >&6; } @@ -21623,19 +21631,19 @@ elif test $ac_cv_sizeof_size_t -eq $ac_cv_sizeof_unsigned_long_long then # Maybe a LLP64 architecture like WIN64 + MAGICK_SIZE_T='unsigned long long' + MAGICK_SIZE_T_F='"ll"' + MAGICK_SSIZE_T='signed long long' + MAGICK_SSIZE_T_F='"ll"' case "${host_os}" in mingw* ) - MAGICK_SIZE_T='unsigned long long' - MAGICK_SIZE_T_F='"I64"' - MAGICK_SSIZE_T='signed long long' - MAGICK_SSIZE_T_F='"I64"' - ;; - *) - MAGICK_SIZE_T='unsigned long long' - MAGICK_SIZE_T_F='"ll"' - MAGICK_SSIZE_T='signed long long' - MAGICK_SSIZE_T_F='"ll"' - ;; + case "${host_vendor}" in + 'pc' ) # Original MinGW, use Microsoft syntax + MAGICK_SIZE_T_F='"I64"' + MAGICK_SSIZE_T_F='"I64"' + ;; + esac + ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGICK_SIZE_T_F" >&5 diff -r 491d8e1de716 -r 804a3a07dbe8 configure.ac --- a/configure.ac Thu Jun 27 17:16:18 2024 -0500 +++ b/configure.ac Fri Jul 05 17:05:11 2024 -0500 @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2023 GraphicsMagick Group +# Copyright (C) 2003-2024 GraphicsMagick Group # Copyright (C) 2002 ImageMagick Studio # Copyright (C) 1998, 1999 E. I. du Pont de Nemours and Company # @@ -1183,8 +1183,13 @@ fi case "${host_os}" in mingw* ) - INT64_F='"I64"' - ;; + # Note that config.guess sets vendor to 'pc' but mingw-w64 + # config.site overrides it and sets host_vendor to 'w64'. + case "${host_vendor}" in + 'pc' ) # Original MinGW, use Microsoft syntax + INT64_F='"I64"' + ;; + esac esac AC_MSG_RESULT([$INT64_T]) AC_SUBST([INT64_T]) @@ -1205,8 +1210,11 @@ fi case "${host_os}" in mingw* ) - UINT64_F='"I64"' - ;; + case "${host_vendor}" in + 'pc' ) # Original MinGW, use Microsoft syntax + UINT64_F='"I64"' + ;; + esac esac AC_MSG_RESULT([$UINT64_T]) AC_SUBST([UINT64_T]) @@ -1278,19 +1286,19 @@ elif test $ac_cv_sizeof_size_t -eq $ac_cv_sizeof_unsigned_long_long then # Maybe a LLP64 architecture like WIN64 + MAGICK_SIZE_T='unsigned long long' + MAGICK_SIZE_T_F='"ll"' + MAGICK_SSIZE_T='signed long long' + MAGICK_SSIZE_T_F='"ll"' case "${host_os}" in mingw* ) - MAGICK_SIZE_T='unsigned long long' - MAGICK_SIZE_T_F='"I64"' - MAGICK_SSIZE_T='signed long long' - MAGICK_SSIZE_T_F='"I64"' - ;; - *) - MAGICK_SIZE_T='unsigned long long' - MAGICK_SIZE_T_F='"ll"' - MAGICK_SSIZE_T='signed long long' - MAGICK_SSIZE_T_F='"ll"' - ;; + case "${host_vendor}" in + 'pc' ) # Original MinGW, use Microsoft syntax + MAGICK_SIZE_T_F='"I64"' + MAGICK_SSIZE_T_F='"I64"' + ;; + esac + ;; esac fi AC_MSG_RESULT([$MAGICK_SIZE_T_F]) diff -r 491d8e1de716 -r 804a3a07dbe8 magick/colormap.c --- a/magick/colormap.c Thu Jun 27 17:16:18 2024 -0500 +++ b/magick/colormap.c Fri Jul 05 17:05:11 2024 -0500 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003 - 2019 GraphicsMagick Group +% Copyright (C) 2003 - 2024 GraphicsMagick Group % Copyright (C) 2003 ImageMagick Studio % Copyright 1991-1999 E. I. du Pont de Nemours and Company % @@ -435,7 +435,7 @@ Allocate replacement colormap */ new_colormap=MagickAllocateArray(PixelPacket *, - sizeof(PixelPacket),colors); + colors,sizeof(PixelPacket)); if (new_colormap == (PixelPacket *) NULL) { MagickFreeMemory(colormap_index); diff -r 491d8e1de716 -r 804a3a07dbe8 magick/magick.c --- a/magick/magick.c Thu Jun 27 17:16:18 2024 -0500 +++ b/magick/magick.c Fri Jul 05 17:05:11 2024 -0500 @@ -544,7 +544,7 @@ /* Allocate array memory */ - array=MagickAllocateArray(MagickInfo **,sizeof(MagickInfo *),(entries+1)); + array=MagickAllocateArray(MagickInfo **,(entries+1),sizeof(MagickInfo *)); if (!array) { UnlockSemaphoreInfo(magick_semaphore); diff -r 491d8e1de716 -r 804a3a07dbe8 magick/version.h --- a/magick/version.h Thu Jun 27 17:16:18 2024 -0500 +++ b/magick/version.h Fri Jul 05 17:05:11 2024 -0500 @@ -38,8 +38,8 @@ #define MagickLibVersion 0x282500 #define MagickLibVersionText "1.4" #define MagickLibVersionNumber 28,25,0 -#define MagickChangeDate "20240627" -#define MagickReleaseDate "snapshot-20240627" +#define MagickChangeDate "20240705" +#define MagickReleaseDate "snapshot-20240705" /* The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines diff -r 491d8e1de716 -r 804a3a07dbe8 wand/pixel_wand.c --- a/wand/pixel_wand.c Thu Jun 27 17:16:18 2024 -0500 +++ b/wand/pixel_wand.c Fri Jul 05 17:05:11 2024 -0500 @@ -1,4 +1,4 @@ -/* Copyright (C) 2003-2014 GraphicsMagick Group */ +/* Copyright (C) 2003-2024 GraphicsMagick Group */ /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % @@ -157,7 +157,7 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% ClonePixelWands creates a deep-copy an array of PixelWands. +% ClonePixelWands creates a deep-copy of an array of PixelWands. % % The format of the ClonePixelWands method is: % @@ -168,7 +168,7 @@ % % o wands: The pixel wands to clone. % -% o number_wands: The number of wands in the array +% o number_wands: The number of wands in the array. % */ WandExport PixelWand ** @@ -184,7 +184,7 @@ assert(number_wands > 0); clone_wands=MagickAllocateArray(PixelWand **, - sizeof(PixelWand *),number_wands); + number_wands,sizeof(PixelWand *)); if (clone_wands == (PixelWand **) NULL) MagickFatalError3(ResourceLimitFatalError,MemoryAllocationFailed, UnableToAllocateWand); @@ -210,7 +210,7 @@ % % The format of the DestroyPixelWand method is: % -% unsigned int DestroyPixelWand(PixelWand *wand) +% void DestroyPixelWand(PixelWand *wand) % % A description of each parameter follows: % @@ -240,7 +240,7 @@ % % The format of the NewPixelWand method is: % -% PixelWand NewPixelWand(void) +% PixelWand *NewPixelWand(void) % % */ @@ -291,7 +291,7 @@ % % The format of the NewPixelWand method is: % -% PixelWand NewPixelWands(const unsigned long number_wands) +% PixelWand **NewPixelWands(const unsigned long number_wands) % % A description of each parameter follows: % @@ -406,7 +406,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % PixelGetBlackQuantum() returns the black color of the pixel wand. The -% color is in the range of [0..MaxRGB] +% color is in the range of [0..MaxRGB]. % % The format of the PixelGetBlackQuantum method is: % @@ -435,7 +435,7 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% PixelGetBlue(const) returns the normalized blue color of the pixel wand. +% PixelGetBlue() returns the normalized blue color of the pixel wand. % % The format of the PixelGetBlue method is: % @@ -464,8 +464,8 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% PixelGetBlueQuantum(const ) returns the blue color of the pixel wand. The -% color is in the range of [0..MaxRGB] +% PixelGetBlueQuantum() returns the blue color of the pixel wand. The +% color is in the range of [0..MaxRGB]. % % The format of the PixelGetBlueQuantum method is: % @@ -494,7 +494,8 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% PixelGetColorAsString() gets the color of the pixel wand. +% PixelGetColorAsString() gets the color of the pixel wand expressed as +% a string. % % The format of the PixelGetColorAsString method is: % @@ -595,7 +596,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % PixelGetCyanQuantum() returns the cyan color of the pixel wand. The color -% is in the range of [0..MaxRGB] +% is in the range of [0..MaxRGB]. % % The format of the PixelGetCyanQuantum method is: % @@ -624,7 +625,7 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% PixelGetGreen(const ) returns the normalized green color of the pixel wand. +% PixelGetGreen() returns the normalized green color of the pixel wand. % % The format of the PixelGetGreen method is: % @@ -653,8 +654,8 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% PixelGetGreenQuantum(const ) returns the green color of the pixel wand. The -% color is in the range of [0..MaxRGB] +% PixelGetGreenQuantum() returns the green color of the pixel wand. The +% color is in the range of [0..MaxRGB]. % % The format of the PixelGetGreenQuantum method is: % @@ -713,7 +714,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % PixelGetMagentaQuantum() returns the magenta color of the pixel wand. The -% color is in the range of [0..MaxRGB] +% color is in the range of [0..MaxRGB]. % % The format of the PixelGetMagentaQuantum method is: % @@ -742,7 +743,7 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% PixelGetOpacity(const ) returns the normalized opacity color of the pixel +% PixelGetOpacity() returns the normalized opacity color of the pixel % wand. % % The format of the PixelGetOpacity method is: @@ -772,8 +773,8 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% PixelGetOpacityQuantum(const ) returns the opacity color of the pixel wand. -% The color is in the range of [0..MaxRGB] +% PixelGetOpacityQuantum() returns the opacity color of the pixel wand. +% The color is in the range of [0..MaxRGB]. % % The format of the PixelGetOpacityQuantum method is: % @@ -806,7 +807,7 @@ % % The format of the PixelGetQuantumColor method is: % -% PixelGetQuantumColor(PixelWand *wand,PixelPacket *color) +% void PixelGetQuantumColor(PixelWand *wand,PixelPacket *color) % % A description of each parameter follows: % @@ -837,7 +838,7 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% PixelGetRed(const ) returns the normalized red color of the pixel wand. +% PixelGetRed() returns the normalized red color of the pixel wand. % % The format of the PixelGetRed method is: % @@ -866,8 +867,8 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% PixelGetRedQuantum(const ) returns the red color of the pixel wand. The -% color is in the range of [0..MaxRGB] +% PixelGetRedQuantum() returns the red color of the pixel wand. The +% color is in the range of [0..MaxRGB]. % % The format of the PixelGetRedQuantum method is: % @@ -926,7 +927,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % PixelGetYellowQuantum() returns the yellow color of the pixel wand. The -% color is in the range of [0..MaxRGB] +% color is in the range of [0..MaxRGB]. %