GraphicsMagick: JNG: Reliably deallocate alpha_image. Do not us...
GraphicsMagick Commits <[email protected]>
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.41842.1640107448.2008.graphicsmagick-commit@lists.sourceforge.net> |
changeset 232cce2f8964 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=232cce2f8964 summary: JNG: Reliably deallocate alpha_image. Do not use broken embedded PNG image. diffstat: ChangeLog | 6 ++++++ VisualMagick/installer/inc/version.isx | 4 ++-- coders/png.c | 32 ++++++++++++++++++++------------ magick/version.h | 4 ++-- www/Changelog.html | 5 +++++ 5 files changed, 35 insertions(+), 16 deletions(-) diffs (165 lines): diff -r faf48bce6b8c -r 232cce2f8964 ChangeLog --- a/ChangeLog Mon Dec 20 08:39:48 2021 -0600 +++ b/ChangeLog Tue Dec 21 11:23:54 2021 -0600 @@ -1,3 +1,9 @@ +2021-12-21 Bob Friesenhahn <[email protected]> + + * coders/png.c (DestroyJNG): Deallocate alpha_image temporary file in DestroyJNG(). + (ReadOnePNGImage): If setjmp fires, then don't return a broken + image. + 2021-12-18 Fojtik Jaroslav <[email protected]> * magick/wpg.c: Fix incorrect TrX and TrY elements in CTM. diff -r faf48bce6b8c -r 232cce2f8964 VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Mon Dec 20 08:39:48 2021 -0600 +++ b/VisualMagick/installer/inc/version.isx Tue Dec 21 11:23:54 2021 -0600 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020211218" -#define public MagickPackageReleaseDate "snapshot-20211218" +#define public MagickPackageVersionAddendum ".020211221" +#define public MagickPackageReleaseDate "snapshot-20211221" diff -r faf48bce6b8c -r 232cce2f8964 coders/png.c --- a/coders/png.c Mon Dec 20 08:39:48 2021 -0600 +++ b/coders/png.c Tue Dec 21 11:23:54 2021 -0600 @@ -794,7 +794,7 @@ if (length > 0x7fffffff) png_warning(png_ptr, "chunk length > 2G"); check=ReadBlob(image,(size_t) length,(char *) data); - if (check != length) + if (check != (size_t) length) { char msg[MaxTextExtent]; @@ -803,8 +803,6 @@ " found %" MAGICK_SIZE_T_F "u bytes", (MAGICK_SIZE_T) length,(MAGICK_SIZE_T) check); png_warning(png_ptr,msg); - if (check < length) - (void) memset(data+check,0,length-check); png_error(png_ptr,"Read Exception"); } } @@ -1311,9 +1309,13 @@ Note that libpng has already taken care of the CRC handling. Returns one of the following: - return(-n); chunk had an error - return(0); did not recognize - return(n); success + return(-n); An error occurred; png_chunk_error will be called. + return(0); The chunk was not handled, the chunk will be discarded + unless png_set_keep_unknown_chunks has been used to set + a 'keep' behavior for this particular chunk, in which + case that will be used. A critical chunk will cause an + error at this point unless it is to be saved. + return(n); The chunk was handled, libpng will ignore/discard it. */ (void) LogMagickEvent(CoderEvent,GetMagickModule(), @@ -1625,6 +1627,11 @@ CopyException(exception,&image->exception); image->columns=0; } + if (image) + { + DestroyImage(image); + image=(Image *) NULL; + } return(image); } @@ -3057,6 +3064,7 @@ } if (*alpha_image) { + (void) LiberateUniqueFileResource((*alpha_image)->filename); DestroyImageList(*alpha_image); *alpha_image = (Image *)NULL; } @@ -3443,7 +3451,8 @@ { if (logging) (void) LogMagickEvent(CoderEvent,GetMagickModule(), - "Unsupported Alpha_compression_method: %u", + "Unsupported Alpha_compression_method: %u" + " (returning NULL)", jng_alpha_compression_method); DestroyJNG(chunk,&color_image,&color_image_info, &alpha_image,&alpha_image_info); @@ -3459,7 +3468,7 @@ DestroyJNG(chunk,&color_image,&color_image_info, &alpha_image,&alpha_image_info); (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " could not allocate alpha_image_info"); + " could not allocate alpha_image_info (returning NULL)"); ThrowException(exception,ResourceLimitError, MemoryAllocationFailed,image->filename); return ((Image *)NULL); @@ -3471,7 +3480,7 @@ DestroyJNG(chunk,&color_image,&color_image_info, &alpha_image,&alpha_image_info); (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " could not allocate alpha_image"); + " could not allocate alpha_image (returning NULL)"); ThrowException(exception,ResourceLimitError, MemoryAllocationFailed,image->filename); return ((Image *)NULL); @@ -3479,7 +3488,7 @@ if (logging) (void) LogMagickEvent(CoderEvent,GetMagickModule(), " Creating alpha_blob."); - (void) AcquireUniqueFilename(alpha_image->filename); + (void) AcquireUniqueFilename(alpha_image->filename); /* Freed by DestroyJNG() */ status=OpenBlob(alpha_image_info,alpha_image,WriteBinaryBlobMode, exception); if (status == MagickFalse) @@ -3487,7 +3496,7 @@ DestroyJNG(chunk,&color_image,&color_image_info, &alpha_image,&alpha_image_info); (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " could not open alpha_image blob"); + " could not open alpha_image blob (returning NULL)"); return ((Image *)NULL); } if (jng_alpha_compression_method == 0) @@ -3949,7 +3958,6 @@ if (!SyncImagePixels(image)) break; } - (void) LiberateUniqueFileResource(alpha_image->filename); DestroyJNG(NULL,&color_image,&color_image_info, &alpha_image,&alpha_image_info); (void) LogMagickEvent(CoderEvent,GetMagickModule(), diff -r faf48bce6b8c -r 232cce2f8964 magick/version.h --- a/magick/version.h Mon Dec 20 08:39:48 2021 -0600 +++ b/magick/version.h Tue Dec 21 11:23:54 2021 -0600 @@ -38,8 +38,8 @@ #define MagickLibVersion 0x262300 #define MagickLibVersionText "1.4" #define MagickLibVersionNumber 26,23,0 -#define MagickChangeDate "20211218" -#define MagickReleaseDate "snapshot-20211218" +#define MagickChangeDate "20211221" +#define MagickReleaseDate "snapshot-20211221" /* The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines diff -r faf48bce6b8c -r 232cce2f8964 www/Changelog.html --- a/www/Changelog.html Mon Dec 20 08:39:48 2021 -0600 +++ b/www/Changelog.html Tue Dec 21 11:23:54 2021 -0600 @@ -35,6 +35,11 @@ <div class="document"> +<p>2021-12-21 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> +* coders/png.c (DestroyJNG): Deallocate alpha_image temporary file in DestroyJNG(). +(ReadOnePNGImage): If setjmp fires, then don't return a broken +image.</blockquote> <p>2021-12-18 Fojtik Jaroslav <<a class="reference external" href="mailto:JaFojtik%40yandex.com">JaFojtik<span>@</span>yandex<span>.</span>com</a>></p> <blockquote> * magick/wpg.c: Fix incorrect TrX and TrY elements in CTM.