Check InsertRow() return value for all calls.
authorfojtik
Sun, 05 Nov 2017 01:11:09 +0100
changeset 15248 fcd3ed3394f6
parent 15247 75245a215fff
child 15249 135bdcb88b8d
Check InsertRow() return value for all calls.
coders/wpg.c
--- a/coders/wpg.c	Sat Nov 04 22:05:24 2017 +0100
+++ b/coders/wpg.c	Sun Nov 05 01:11:09 2017 +0100
@@ -359,19 +359,22 @@
   x++; \
   if((long) x>=ldblk) \
   { \
-    (void)InsertRow(BImgBuff,(long) y,image,bpp); \
+    if(InsertRow(BImgBuff,(long) y,image,bpp)==MagickFail) RetVal=-6; \
     x=0; \
     y++; \
     } \
 }
 
-/* WPG1 raster reader. */
+/* WPG1 raster reader.
+ * @return	0 - OK; -2 - alocation failure; -3 unaligned column; -4 - image row overflowl 
+                -5 - blob read error; -6 - row insert problem  */
 static int UnpackWPGRaster(Image *image,int bpp)
 {
   int
     x,
     y,
     i;
+  int RetVal = 0;
 
   unsigned char
     bbuf,
@@ -395,8 +398,8 @@
   while(y<(long) image->rows)
     {
       i = ReadBlobByte(image);
-	  if(i==EOF)
-	    {
+      if(i==EOF)
+        {
           MagickFreeMemory(BImgBuff);
           return(-5);
         }
@@ -444,7 +447,7 @@
               if(InsertRow(BImgBuff,y-1,image,bpp)==MagickFail)
                 {
                   MagickFreeMemory(BImgBuff);
-                  return(-5);
+                  return(-6);
                 }
                 
             }
@@ -452,7 +455,7 @@
       }
     }
   MagickFreeMemory(BImgBuff);
-  return(0);
+  return(RetVal);
 }
 
 
@@ -466,7 +469,7 @@
   x++; \
   if((long) x >= ldblk) \
   { \
-    (void)InsertRow(BImgBuff,(long) y,image,bpp); \
+    if(InsertRow(BImgBuff,(long) y,image,bpp)==MagickFail) RetVal=-6; \
     x=0; \
     y++; \
     XorMe = 0; \
@@ -509,6 +512,7 @@
 
   int XorMe = 0;
   int c;
+  int RetVal = 0;
 
   x=0;
   y=0;
@@ -643,7 +647,7 @@
         }
     }
   FreeUnpackWPG2RasterAllocs(BImgBuff,UpImgBuff);
-  return(0);
+  return(RetVal);
 }