Commit 8947775ec for imagemagick.org
commit 8947775ecf138e9227df57f8dee63b5f79f58387
Author: Cristy <urban-warrior@imagemagick.org>
Date: Thu Mar 19 20:38:25 2026 -0400
https://github.com/ImageMagick/ImageMagick/issues/8624
diff --git a/coders/fits.c b/coders/fits.c
index eebab3382..375e635b5 100644
--- a/coders/fits.c
+++ b/coders/fits.c
@@ -302,24 +302,24 @@ static Image *ReadFITSImage(const ImageInfo *image_info,
image=DestroyImageList(image);
return((Image *) NULL);
}
+ /*
+ Initialize image header.
+ */
+ (void) memset(&fits_info,0,sizeof(fits_info));
+ fits_info.extend=MagickFalse;
+ fits_info.simple=MagickFalse;
+ fits_info.bits_per_pixel=8;
+ fits_info.columns=1;
+ fits_info.rows=1;
+ fits_info.number_axes=0;
+ fits_info.number_planes=1;
+ fits_info.min_data=0.0;
+ fits_info.max_data=0.0;
+ fits_info.zero=0.0;
+ fits_info.scale=1.0;
+ fits_info.endian=MSBEndian;
do
{
- /*
- Initialize image header.
- */
- (void) memset(&fits_info,0,sizeof(fits_info));
- fits_info.extend=MagickFalse;
- fits_info.simple=MagickFalse;
- fits_info.bits_per_pixel=8;
- fits_info.columns=1;
- fits_info.rows=1;
- fits_info.number_axes=1;
- fits_info.number_planes=1;
- fits_info.min_data=0.0;
- fits_info.max_data=0.0;
- fits_info.zero=0.0;
- fits_info.scale=1.0;
- fits_info.endian=MSBEndian;
/*
Decode image header.
*/
@@ -411,7 +411,7 @@ static Image *ReadFITSImage(const ImageInfo *image_info,
ThrowReaderException(CorruptImageError,"ImproperImageHeader");
}
if ((fits_info.columns <= 0) || (fits_info.rows <= 0) ||
- (fits_info.number_axes <= 0) || (fits_info.number_planes <= 0))
+ (fits_info.number_axes < 0) || (fits_info.number_planes <= 0))
{
if (comment != (char *) NULL)
comment=DestroyString(comment);
@@ -437,7 +437,13 @@ static Image *ReadFITSImage(const ImageInfo *image_info,
if ((fits_info.simple == MagickFalse) || (fits_info.number_axes < 1) ||
(fits_info.number_axes > 4) || (number_pixels == 0) ||
(fits_info.number_planes <= 0))
- ThrowReaderException(CorruptImageError,"ImageTypeNotSupported");
+ {
+ number_pixels=number_pixels*
+ MagickAbsoluteValue(fits_info.bits_per_pixel)/8;
+ number_pixels=((number_pixels+FITSBlocksize-1)/FITSBlocksize)*
+ FITSBlocksize;
+ (void) SeekBlob(image,(MagickOffsetType) number_pixels,SEEK_CUR);
+ }
for (scene=0; scene < (ssize_t) fits_info.number_planes; scene++)
{
image->columns=(size_t) fits_info.columns;