CVE-2022-1270
authorLaszlo Boszormenyi (GCS) <gcs@debian.org>
Thu, 24 Nov 2022 20:50:54 +0000 (20:50 +0000)
committerMoritz Muehlenhoff <jmm@debian.org>
Thu, 24 Nov 2022 20:50:54 +0000 (20:50 +0000)
# HG changeset patch
# User Bob Friesenhahn <bfriesen@GraphicsMagick.org>
# Date 1648301533 18000
# Node ID 94f4bcf448ad29d6d8470e444038402d34fbba12
# Parent  07c1e6eeffb8cb2abb9ede843a45ba7e5435b3b0
ReadMIFFImage(): Validate claimed bzip2-compressed row length prior to reading data into fixed size buffer.

Gbp-Pq: Name CVE-2022-1270.patch

coders/miff.c

index 08274209cf41840d3c6b046b758ffeb223d9fe88..aa48311b3bb62f9c812eb4ac4508a17fb53ef8ae 100644 (file)
@@ -1862,9 +1862,20 @@ static Image *ReadMIFFImage(const ImageInfo *image_info,
                       else
                         {
                           length=ReadBlobMSBLong(image);
+                          if (image->logging)
+                            (void) LogMagickEvent(CoderEvent,GetMagickModule(),
+                                                  "length = %"MAGICK_SIZE_T_F"u",
+                                                  (MAGICK_SIZE_T) length);
+                          if ((length == 0) || (length > compressed_length))
+                            {
+                              (void) BZ2_bzDecompressEnd(&bzip_info);
+                              ThrowMIFFReaderException(CorruptImageError,UnableToUncompressImage,
+                                                       image);
+                            }
                           bzip_info.avail_in=(unsigned int) ReadBlob(image,length,bzip_info.next_in);
                           if ((size_t) bzip_info.avail_in != length)
                             {
+                              (void) BZ2_bzDecompressEnd(&bzip_info);
                               ThrowMIFFReaderException(CorruptImageError,UnexpectedEndOfFile,
                                                    image);
                             }