Sophie

Sophie

distrib > Mageia > 5 > i586 > by-pkgid > 924f283dc2a92a7452b3f8d7f4d71fb4 > files > 34

imagemagick-6.8.9.9-4.mga5.src.rpm

From f9ef11671c41da4cf973d0d880af1cdfbd127860 Mon Sep 17 00:00:00 2001
From: dirk <dirk@aa41f4f7-0bf4-0310-aa73-e5a19afd5a74>
Date: Tue, 16 Dec 2014 23:15:01 +0000
Subject: Fixed throwing of exceptions in psd handling and fix a memory leak

git-svn-id: https://subversion.imagemagick.org/subversion/ImageMagick/branches/ImageMagick-6@17308 aa41f4f7-0bf4-0310-aa73-e5a19afd5a74
origin:  http://trac.imagemagick.org/changeset/17308

diff --git a/coders/psd.c b/coders/psd.c
index f4dec69..8c99dc9 100644
--- a/coders/psd.c
+++ b/coders/psd.c
@@ -1218,9 +1218,10 @@ static MagickStatusType ReadPSDLayers(Image *image,const ImageInfo *image_info,
       count=ReadBlob(image,4,(unsigned char *) type);
       if ((count == 0) || (LocaleNCompare(type,"8BIM",4) != 0))
         {
-          if (DiscardBlobBytes(image,(MagickSizeType) (size-quantum-8)) == MagickFalse)
-            ThrowFileException(exception,CorruptImageError,
-              "UnexpectedEndOfFile",image->filename);
+          if (DiscardBlobBytes(image,(MagickSizeType) (size-quantum-8)) ==
+              MagickFalse)
+            ThrowBinaryException(CorruptImageError,"UnexpectedEndOfFile",
+              image->filename);
         }
       else
         {
@@ -1228,9 +1229,10 @@ static MagickStatusType ReadPSDLayers(Image *image,const ImageInfo *image_info,
           if ((count != 0) && (LocaleNCompare(type,"Lr16",4) == 0))
             size=GetPSDSize(psd_info,image);
           else
-            if (DiscardBlobBytes(image,(MagickSizeType) (size-quantum-12)) == MagickFalse)
-              ThrowFileException(exception,CorruptImageError,
-                "UnexpectedEndOfFile",image->filename);
+            if (DiscardBlobBytes(image,(MagickSizeType) (size-quantum-12)) ==
+                MagickFalse)
+              ThrowBinaryException(CorruptImageError,"UnexpectedEndOfFile",
+                image->filename);
         }
     }
 
@@ -1261,7 +1263,8 @@ static MagickStatusType ReadPSDLayers(Image *image,const ImageInfo *image_info,
           "  image contains %.20g layers",(double) number_layers);
 
       if (number_layers == 0)
-        return(MagickFalse);
+        ThrowBinaryException(CorruptImageError,"InvalidNumberOfLayers",
+          image->filename);
 
       layer_info=(LayerInfo *) AcquireQuantumMemory((size_t) number_layers,
         sizeof(*layer_info));
@@ -1296,7 +1299,7 @@ static MagickStatusType ReadPSDLayers(Image *image,const ImageInfo *image_info,
           {
             layer_info=DestroyLayerInfo(layer_info,number_layers);
             ThrowBinaryException(CorruptImageError,"MaximumChannelsExceeded",
-            image->filename);
+              image->filename);
           }
         if (image->debug != MagickFalse)
           (void) LogMagickEvent(CoderEvent,GetMagickModule(),
@@ -1375,8 +1378,8 @@ static MagickStatusType ReadPSDLayers(Image *image,const ImageInfo *image_info,
                 if (DiscardBlobBytes(image,(MagickSizeType) (length-16)) == MagickFalse)
                   {
                     layer_info=DestroyLayerInfo(layer_info,number_layers);
-                    ThrowFileException(exception,CorruptImageError,
-                      "UnexpectedEndOfFile",image->filename);
+                    ThrowBinaryException(CorruptImageError,"UnexpectedEndOfFile",
+                      image->filename);
                   }
               }
             length=ReadBlobMSBLong(image);
@@ -1808,6 +1811,7 @@ static Image *ReadPSDImage(const ImageInfo *image_info,
   if (image_info->ping != MagickFalse)
     {
       (void) CloseBlob(image);
+      image=DestroyImageList(image);
       return(image);
     }
   /*
-- 
cgit v0.10.2