Commit 1b63224bd for imagemagick.org
commit 1b63224bd4402808dfc323ef5ce13ba15062cb27
Author: Cristy <urban-warrior@imagemagick.org>
Date: Thu Jun 25 07:51:31 2026 -0400
https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-cvxf-g9w2-7mcx
diff --git a/coders/cals.c b/coders/cals.c
index 26c28b04d..d99559c0e 100644
--- a/coders/cals.c
+++ b/coders/cals.c
@@ -255,16 +255,20 @@ static Image *ReadCALSImage(const ImageInfo *image_info,
file=(FILE *) NULL;
unique_file=AcquireUniqueFileResource(filename);
if (unique_file != -1)
- file=fdopen(unique_file,"wb");
+ file=fdopen(unique_file,"rb+");
if ((unique_file == -1) || (file == (FILE *) NULL))
ThrowImageException(FileOpenError,"UnableToCreateTemporaryFile");
while ((c=ReadBlobByte(image)) != EOF)
if (fputc(c,file) != c)
break;
- (void) fclose(file);
+ if (fflush(file) != 0)
+ ThrowImageException(FileOpenError,"UnableToCreateTemporaryFile");
+ if (fseek(file,0,SEEK_SET) != 0)
+ ThrowImageException(FileOpenError,"UnableToCreateTemporaryFile");
(void) CloseBlob(image);
image=DestroyImage(image);
read_info=CloneImageInfo(image_info);
+ read_info->file=file;
SetImageInfoBlob(read_info,(void *) NULL,0);
(void) FormatLocaleString(read_info->filename,MagickPathExtent,"group4:%s",
filename);
@@ -274,6 +278,7 @@ static Image *ReadCALSImage(const ImageInfo *image_info,
(void) CloneString(&read_info->density,message);
read_info->orientation=(OrientationType) orientation;
image=ReadImage(read_info,exception);
+ read_info->file=(FILE *) NULL;
if (image != (Image *) NULL)
{
(void) CopyMagickString(image->filename,image_info->filename,