]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 12 Sep 2009 14:56:09 +0000 (14:56 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 12 Sep 2009 14:56:09 +0000 (14:56 +0000)
coders/cmyk.c
coders/rgb.c
coders/ycbcr.c

index fc5bb926370648635af2a14adf00a96c9c2855e7..a20ec2d84c127378f4793c1362a9dc488d9956f2 100644 (file)
@@ -214,8 +214,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           {
             length=GetQuantumExtent(canvas_image,quantum_info,quantum_type);
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
         for (y=0; y < (long) image->extract_info.height; y++)
         {
@@ -234,6 +232,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -276,8 +280,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
             }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         break;
       }
@@ -300,8 +302,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           {
             length=GetQuantumExtent(canvas_image,quantum_info,CyanQuantum);
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
         for (y=0; y < (long) image->extract_info.height; y++)
         {
@@ -320,6 +320,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           for (i=0; i < (image->matte != MagickFalse ? 5 : 4); i++)
           {
             quantum_type=quantum_types[i];
@@ -362,8 +368,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                   break;
               }
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
           if (image->previous == (Image *) NULL)
             {
@@ -383,8 +387,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           {
             length=GetQuantumExtent(canvas_image,quantum_info,CyanQuantum);
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
         for (y=0; y < (long) image->extract_info.height; y++)
         {
@@ -397,6 +399,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -425,8 +433,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
             }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -445,6 +451,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -473,8 +485,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
            }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -493,6 +503,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -521,8 +537,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
             }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -547,6 +561,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -577,8 +597,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
             }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -599,6 +617,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
               register PixelPacket
                 *__restrict q;
 
+              if (count != (ssize_t) length)
+                {
+                  ThrowFileException(exception,CorruptImageError,
+                    "UnexpectedEndOfFile",image->filename);
+                  break;
+                }
               q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
                 exception);
               if (q == (PixelPacket *) NULL)
@@ -628,8 +652,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                     break;
                 }
               count=ReadBlob(image,length,pixels);
-              if (count != (ssize_t) length)
-                break;
             }
             if (image->previous == (Image *) NULL)
               {
@@ -676,8 +698,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
               }
         count=ReadBlob(image,length,pixels);
-        if (count != (ssize_t) length)
-          break;
         for (y=0; y < (long) image->extract_info.height; y++)
         {
           register const PixelPacket
@@ -689,6 +709,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -717,8 +743,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
             }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -745,8 +769,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
               }
         count=ReadBlob(image,length,pixels);
-        if (count != (ssize_t) length)
-          break;
         for (y=0; y < (long) image->extract_info.height; y++)
         {
           register const PixelPacket
@@ -758,6 +780,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -786,8 +814,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
            }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -814,8 +840,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
               }
         count=ReadBlob(image,length,pixels);
-        if (count != (ssize_t) length)
-          break;
         for (y=0; y < (long) image->extract_info.height; y++)
         {
           register const PixelPacket
@@ -827,6 +851,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -855,8 +885,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
            }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -883,8 +911,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
               }
         count=ReadBlob(image,length,pixels);
-        if (count != (ssize_t) length)
-          break;
         for (y=0; y < (long) image->extract_info.height; y++)
         {
           register const IndexPacket
@@ -902,6 +928,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -932,8 +964,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                 break;
            }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -962,8 +992,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                     break;
                   }
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
             for (y=0; y < (long) image->extract_info.height; y++)
             {
               register const PixelPacket
@@ -975,6 +1003,12 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
               register PixelPacket
                 *__restrict q;
 
+              if (count != (ssize_t) length)
+                {
+                  ThrowFileException(exception,CorruptImageError,
+                    "UnexpectedEndOfFile",image->filename);
+                  break;
+                }
               q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
                 exception);
               if (q == (PixelPacket *) NULL)
@@ -1003,8 +1037,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info,
                     break;
                }
               count=ReadBlob(image,length,pixels);
-              if (count != (ssize_t) length)
-                break;
             }
             if (image->previous == (Image *) NULL)
               {
index 8dfef38452d6a9e44fc54ccd4c55f16a83c0c0ed..b062f09363128a12c85c774d61a86e52a3f8b202 100644 (file)
@@ -255,6 +255,12 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -302,8 +308,6 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
                 break;
             }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         break;
       }
@@ -316,8 +320,6 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
           {
             length=GetQuantumExtent(canvas_image,quantum_info,quantum_types[0]);
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
         for (y=0; y < (long) image->extract_info.height; y++)
         {
@@ -330,6 +332,12 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
           register PixelPacket
             *__restrict q;
 
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           for (i=0; i < channels; i++)
           {
             q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
@@ -364,8 +372,6 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
                   break;
               }
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
           if (image->previous == (Image *) NULL)
             {
@@ -385,8 +391,6 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
           {
             length=GetQuantumExtent(canvas_image,quantum_info,quantum_types[0]);
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
         for (i=0; i < channels; i++)
         {
@@ -401,6 +405,12 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
             register PixelPacket
               *__restrict q;
 
+            if (count != (ssize_t) length)
+              {
+                ThrowFileException(exception,CorruptImageError,
+                  "UnexpectedEndOfFile",image->filename);
+                break;
+              }
             q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
               exception);
             if (q == (PixelPacket *) NULL)
@@ -437,8 +447,6 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
                   break;
               }
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
           if (image->previous == (Image *) NULL)
             {
@@ -489,8 +497,6 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
                   break;
                 }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
           for (y=0; y < (long) image->extract_info.height; y++)
           {
             register const PixelPacket
@@ -502,6 +508,12 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
             register PixelPacket
               *__restrict q;
 
+            if (count != (ssize_t) length)
+              {
+                ThrowFileException(exception,CorruptImageError,
+                  "UnexpectedEndOfFile",image->filename);
+                break;
+              }
             q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
               exception);
             if (q == (PixelPacket *) NULL)
@@ -538,8 +550,6 @@ static Image *ReadRGBImage(const ImageInfo *image_info,ExceptionInfo *exception)
                   break;
               }
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
           if (image->previous == (Image *) NULL)
             {
index 14c87c94a8d8b1b39bf4e3d105c6166874c2fddd..2546eab73e23dd9f63bff3db97bf2b538a705390 100644 (file)
@@ -221,11 +221,15 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
           {
             length=GetQuantumExtent(canvas_image,quantum_info,quantum_type);
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
         for (y=0; y < (long) image->extract_info.height; y++)
         {
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -264,8 +268,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                 break;
             }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         break;
       }
@@ -287,13 +289,17 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
           {
             length=GetQuantumExtent(canvas_image,quantum_info,RedQuantum);
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
         for (y=0; y < (long) image->extract_info.height; y++)
         {
           for (i=0; i < (image->matte != MagickFalse ? 4 : 3); i++)
           {
+            if (count != (ssize_t) length)
+              {
+                ThrowFileException(exception,CorruptImageError,
+                  "UnexpectedEndOfFile",image->filename);
+                break;
+              }
             quantum_type=quantum_types[i];
             q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
               exception);
@@ -330,8 +336,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                   break;
               }
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
           if (image->previous == (Image *) NULL)
             {
@@ -351,11 +355,15 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
           {
             length=GetQuantumExtent(canvas_image,quantum_info,RedQuantum);
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
           }
         for (y=0; y < (long) image->extract_info.height; y++)
         {
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -384,8 +392,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                 break;
             }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -395,6 +401,12 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
           }
         for (y=0; y < (long) image->extract_info.height; y++)
         {
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -423,8 +435,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                 break;
            }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -434,6 +444,12 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
           }
         for (y=0; y < (long) image->extract_info.height; y++)
         {
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -462,8 +478,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                 break;
             }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -475,6 +489,12 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
           {
             for (y=0; y < (long) image->extract_info.height; y++)
             {
+              if (count != (ssize_t) length)
+                {
+                  ThrowFileException(exception,CorruptImageError,
+                    "UnexpectedEndOfFile",image->filename);
+                  break;
+                }
               q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
                 exception);
               if (q == (PixelPacket *) NULL)
@@ -504,8 +524,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                     break;
                 }
               count=ReadBlob(image,length,pixels);
-              if (count != (ssize_t) length)
-                break;
             }
             if (image->previous == (Image *) NULL)
               {
@@ -552,10 +570,14 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                 break;
               }
         count=ReadBlob(image,length,pixels);
-        if (count != (ssize_t) length)
-          break;
         for (y=0; y < (long) image->extract_info.height; y++)
         {
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -584,8 +606,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                 break;
             }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -612,10 +632,14 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                 break;
               }
         count=ReadBlob(image,length,pixels);
-        if (count != (ssize_t) length)
-          break;
         for (y=0; y < (long) image->extract_info.height; y++)
         {
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -644,8 +668,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                 break;
            }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -672,10 +694,14 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                 break;
               }
         count=ReadBlob(image,length,pixels);
-        if (count != (ssize_t) length)
-          break;
         for (y=0; y < (long) image->extract_info.height; y++)
         {
+          if (count != (ssize_t) length)
+            {
+              ThrowFileException(exception,CorruptImageError,
+                "UnexpectedEndOfFile",image->filename);
+              break;
+            }
           q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
             exception);
           if (q == (PixelPacket *) NULL)
@@ -704,8 +730,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                 break;
            }
           count=ReadBlob(image,length,pixels);
-          if (count != (ssize_t) length)
-            break;
         }
         if (image->previous == (Image *) NULL)
           {
@@ -734,10 +758,14 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                     break;
                   }
             count=ReadBlob(image,length,pixels);
-            if (count != (ssize_t) length)
-              break;
             for (y=0; y < (long) image->extract_info.height; y++)
             {
+              if (count != (ssize_t) length)
+                {
+                  ThrowFileException(exception,CorruptImageError,
+                    "UnexpectedEndOfFile",image->filename);
+                  break;
+                }
               q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
                 exception);
               if (q == (PixelPacket *) NULL)
@@ -767,8 +795,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info,
                     break;
                }
               count=ReadBlob(image,length,pixels);
-              if (count != (ssize_t) length)
-                break;
             }
             if (image->previous == (Image *) NULL)
               {