]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <urban-warrior@imagemagick.org>
Mon, 19 Mar 2018 01:47:37 +0000 (21:47 -0400)
committerCristy <urban-warrior@imagemagick.org>
Mon, 19 Mar 2018 01:47:37 +0000 (21:47 -0400)
coders/bmp.c
coders/dib.c

index 3ba5348c4157a331d4f9d15bd4076dd1d2002777..7cf8b7d24b60dc904061c51871d5815203a7c19e 100644 (file)
@@ -232,7 +232,7 @@ static MagickBooleanType DecodeImage(Image *image,const size_t compression,
     MagickBooleanType
       status;
 
-    if ((p < pixels) || (p >= q))
+    if ((p < pixels) || (p > q))
       break;
     count=ReadBlobByte(image);
     if (count == EOF)
@@ -286,14 +286,8 @@ static MagickBooleanType DecodeImage(Image *image,const size_t compression,
             /*
               Delta mode.
             */
-            byte=ReadBlobByte(image);
-            if (byte == EOF)
-              break;
-            x+=byte;
-            byte=ReadBlobByte(image);
-            if (byte == EOF)
-              break;
-            y+=byte;
+            x+=ReadBlobByte(image);
+            y+=ReadBlobByte(image);
             p=pixels+y*image->columns+x;
             break;
           }
@@ -303,8 +297,6 @@ static MagickBooleanType DecodeImage(Image *image,const size_t compression,
               Absolute mode.
             */
             count=(int) MagickMin((ssize_t) count,(ssize_t) (q-p));
-            if (count < 0)
-              break;
             if (compression == BI_RLE8)
               for (i=0; i < (ssize_t) count; i++)
               {
index 1aa33b5a4b18cc5c811d1c0dac3454ecc25c1ecf..8d1a72c43c44f295893f97021f3c8fffdec4903f 100644 (file)
@@ -190,9 +190,6 @@ static MagickBooleanType DecodeImage(Image *image,
   q=pixels+number_pixels;
   for (y=0; y < (ssize_t) image->rows; )
   {
-    MagickBooleanType
-      status;
-
     if ((p < pixels) || (p >= q))
       break;
     count=ReadBlobByte(image);
@@ -200,10 +197,10 @@ static MagickBooleanType DecodeImage(Image *image,
       break;
     if (count > 0)
       {
+        count=(int) MagickMin((size_t) count,(size_t) (q-p));
         /*
           Encoded mode.
         */
-        count=(int) MagickMin((size_t) count,(size_t) (q-p));
         byte=ReadBlobByte(image);
         if (byte == EOF)
           break;
@@ -226,8 +223,6 @@ static MagickBooleanType DecodeImage(Image *image,
           Escape mode.
         */
         count=ReadBlobByte(image);
-        if (count == EOF)
-          break;
         if (count == 0x01)
           return(MagickTrue);
         switch (count)
@@ -247,14 +242,8 @@ static MagickBooleanType DecodeImage(Image *image,
             /*
               Delta mode.
             */
-            byte=ReadBlobByte(image);
-            if (byte == EOF)
-              break;
-            x+=byte;
-            byte=ReadBlobByte(image);
-            if (byte == EOF)
-              break;
-            y+=byte;
+            x+=ReadBlobByte(image);
+            y+=ReadBlobByte(image);
             p=pixels+y*image->columns+x;
             break;
           }
@@ -264,8 +253,6 @@ static MagickBooleanType DecodeImage(Image *image,
               Absolute mode.
             */
             count=(int) MagickMin((size_t) count,(size_t) (q-p));
-            if (count < 0)
-              break;
             if (compression == BI_RLE8)
               for (i=0; i < (ssize_t) count; i++)
               {
@@ -304,14 +291,12 @@ static MagickBooleanType DecodeImage(Image *image,
           }
         }
       }
-    status=SetImageProgress(image,LoadImageTag,(MagickOffsetType) y,
-      image->rows);
-    if (status == MagickFalse)
+    if (SetImageProgress(image,LoadImageTag,(MagickOffsetType) y,image->rows) == MagickFalse)
       break;
   }
   (void) ReadBlobByte(image);  /* end of line */
   (void) ReadBlobByte(image);
-  return(y < (ssize_t) image->rows ? MagickFalse : MagickTrue);
+  return(MagickTrue);
 }
 \f
 /*