68 lines
2.7 KiB
Diff
68 lines
2.7 KiB
Diff
--- 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);
|