--- GraphicsMagick-1.3.40/coders/jpeg.c 2022-12-26 11:56:04.000000000 -0500 +++ GraphicsMagick-1.4.020230708/coders/jpeg.c 2023-05-31 08:38:54.000000000 -0400 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2022 GraphicsMagick Group +% Copyright (C) 2003-2023 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % Copyright 1991-1999 E. I. du Pont de Nemours and Company % @@ -954,7 +954,7 @@ i; save_quality=0; -#ifdef D_LOSSLESS_SUPPORTED +#if !defined(LIBJPEG_TURBO_VERSION_NUMBER) && defined(D_LOSSLESS_SUPPORTED) if (image->compression==LosslessJPEGCompression) { save_quality=100; @@ -1461,7 +1461,9 @@ } #endif #if (JPEG_LIB_VERSION >= 61) && defined(D_PROGRESSIVE_SUPPORTED) -#ifdef D_LOSSLESS_SUPPORTED +#if !defined(LIBJPEG_TURBO_VERSION_NUMBER) && defined(D_LOSSLESS_SUPPORTED) + /* This code is based on a patch to IJG JPEG 6b, or somesuch. Standard + library does not have a 'process' member. */ image->interlace= jpeg_info.process == JPROC_PROGRESSIVE ? LineInterlace : NoInterlace; image->compression=jpeg_info.process == JPROC_LOSSLESS ? @@ -1693,7 +1695,7 @@ } } - jpeg_pixels=MagickAllocateResourceLimitedArray(JSAMPLE *, + jpeg_pixels=MagickAllocateResourceLimitedClearedArray(JSAMPLE *, jpeg_info.output_components, MagickArraySize(image->columns, sizeof(JSAMPLE))); @@ -1702,9 +1704,6 @@ jpeg_destroy_decompress(&jpeg_info); ThrowJPEGReaderException(ResourceLimitError,MemoryAllocationFailed,image); } - (void) memset(jpeg_pixels,0,MagickArraySize(jpeg_info.output_components, - MagickArraySize(image->columns, - sizeof(JSAMPLE)))); /* Extended longjmp-based error handler (with jpeg_pixels) @@ -2791,7 +2790,8 @@ (void) LogMagickEvent(CoderEvent,GetMagickModule(), "Image resolution: %ld,%ld",(long) image->x_resolution, (long) image->y_resolution); - if ((image->x_resolution != 0) && (image->y_resolution != 0)) + if ((image->x_resolution >= 0) && (image->x_resolution < (double) SHRT_MAX) && + (image->y_resolution >= 0) && (image->y_resolution < (double) SHRT_MAX)) { /* Set image resolution. @@ -2896,7 +2896,7 @@ if ((image->compression == LosslessJPEGCompression) || (quality > 100)) { -#if defined(C_LOSSLESS_SUPPORTED) +#if !defined(LIBJPEG_TURBO_VERSION_NUMBER) && defined(C_LOSSLESS_SUPPORTED) if (quality < 100) ThrowException(&image->exception,CoderWarning, LosslessToLossyJPEGConversion,(char *) NULL);