]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <urban-warrior@imagemagick.org>
Wed, 26 Apr 2017 21:08:27 +0000 (17:08 -0400)
committerCristy <urban-warrior@imagemagick.org>
Wed, 26 Apr 2017 21:08:27 +0000 (17:08 -0400)
coders/pcd.c

index c049f914485e99997c970efc93dcf126c2ac084e..9cb33d60d6aa6d49667b46cffab7cead164d7a5a 100644 (file)
@@ -540,12 +540,15 @@ static Image *ReadPCDImage(const ImageInfo *image_info,ExceptionInfo *exception)
   overview=LocaleNCompare((char *) header,"PCD_OPA",7) == 0;
   if ((count != (3*0x800)) ||
       ((LocaleNCompare((char *) header+0x800,"PCD",3) != 0) && (overview ==0)))
-    ThrowReaderException(CorruptImageError,"ImproperImageHeader");
+    {
+      header=(unsigned char *) RelinquishMagickMemory(header);
+      ThrowReaderException(CorruptImageError,"ImproperImageHeader");
+    }
   rotate=header[0x0e02] & 0x03;
   number_images=(header[10] << 8) | header[11];
+  header=(unsigned char *) RelinquishMagickMemory(header);
   if (number_images > 65535)
     ThrowReaderException(CorruptImageError,"ImproperImageHeader");
-  header=(unsigned char *) RelinquishMagickMemory(header);
   /*
     Determine resolution by scene specification.
   */
@@ -682,7 +685,7 @@ static Image *ReadPCDImage(const ImageInfo *image_info,ExceptionInfo *exception)
         }
         image->colorspace=YCCColorspace;
         if (LocaleCompare(image_info->magick,"PCDS") == 0)
-          SetImageColorspace(image,sRGBColorspace,exception);
+          (void) SetImageColorspace(image,sRGBColorspace,exception);
         if (j < (ssize_t) number_images)
           {
             /*
@@ -836,7 +839,7 @@ static Image *ReadPCDImage(const ImageInfo *image_info,ExceptionInfo *exception)
   image->gamma=1.000f/2.200f;
   image->colorspace=YCCColorspace;
   if (LocaleCompare(image_info->magick,"PCDS") == 0)
-    SetImageColorspace(image,sRGBColorspace,exception);
+    (void) SetImageColorspace(image,sRGBColorspace,exception);
   return(GetFirstImageInList(image));
 }
 \f