Commit 08b9f2747 for imagemagick.org
commit 08b9f2747c0399948b67cf329c7091c5db069bcc
Author: Cristy <urban-warrior@imagemagick.org>
Date: Mon May 18 20:08:23 2026 -0400
https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-9hqg-xf93-ghfw
diff --git a/coders/jpeg.c b/coders/jpeg.c
index f7a7197d6..e12f341e1 100644
--- a/coders/jpeg.c
+++ b/coders/jpeg.c
@@ -1639,6 +1639,9 @@ static MagickBooleanType ReadMPOImages(const ImageInfo *image_info,
count,
j = 0;
+ MagickBooleanType
+ is_blob_readable;
+
unsigned char
alt_signature[SIGNATURE_SIZE] = {0xff, 0xd8, 0xff, 0xe1},
buffer[BUFFER_SIZE],
@@ -1654,8 +1657,10 @@ static MagickBooleanType ReadMPOImages(const ImageInfo *image_info,
image=DestroyImageList(image);
return(MagickFalse);
}
+ is_blob_readable=MagickTrue;
(void) SeekBlob(image,offset,SEEK_SET);
- while ((count=ReadBlob(image,BUFFER_SIZE,buffer)) != 0)
+ while ((is_blob_readable != MagickFalse) &&
+ (count=ReadBlob(image,BUFFER_SIZE,buffer)) != 0)
{
ssize_t
i;
@@ -1678,6 +1683,7 @@ static MagickBooleanType ReadMPOImages(const ImageInfo *image_info,
offset+=i-SIGNATURE_SIZE+1;
old_offset=offset;
(void) CloseBlob(image);
+ is_blob_readable=MagickFalse;
jpeg_image=ReadOneJPEGImage(image_info,jpeg_info,&offset,exception);
if (jpeg_image != (Image *) NULL)
AppendImageToList(&images,jpeg_image);
@@ -1686,6 +1692,7 @@ static MagickBooleanType ReadMPOImages(const ImageInfo *image_info,
status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception);
if (status == MagickFalse)
break;
+ is_blob_readable=MagickTrue;
(void) SeekBlob(image,offset,SEEK_SET);
count=0;
j=0;