]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 2 Sep 2013 20:04:42 +0000 (20:04 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 2 Sep 2013 20:04:42 +0000 (20:04 +0000)
MagickCore/compare.c
MagickCore/identify.c
MagickCore/statistic.c

index 0458421dd9b85e1a31aaec8fd9f20ddccac6b67b..4f00054b7f688cfbd5d5305527fd698786fdedce 100644 (file)
@@ -878,6 +878,17 @@ static MagickBooleanType GetNormalizedCrossCorrelationDistortion(
   */
   image_statistics=GetImageStatistics(image,exception);
   reconstruct_statistics=GetImageStatistics(reconstruct_image,exception);
+  if ((image_statistics == (ChannelStatistics *) NULL) ||
+      (reconstruct_statistics == (ChannelStatistics *) NULL))
+    {
+      if (image_statistics != (ChannelStatistics *) NULL)
+        image_statistics=(ChannelStatistics *) RelinquishMagickMemory(
+          image_statistics);
+      if (reconstruct_statistics != (ChannelStatistics *) NULL)
+        reconstruct_statistics=(ChannelStatistics *) RelinquishMagickMemory(
+          reconstruct_statistics);
+      return(MagickFalse);
+    }
   status=MagickTrue;
   progress=0;
   for (i=0; i <= MaxPixelChannels; i++)
index 001a88306e45c27f002380f42b54b1d232c241d8..7635c9f7b0bdb9055a9c4a220dc38d149a9b826b 100644 (file)
@@ -154,9 +154,6 @@ static ChannelStatistics *GetLocationStatistics(const Image *image,
   ChannelStatistics
     *channel_statistics;
 
-  MagickStatusType
-    status;
-
   register ssize_t
     i;
 
@@ -475,6 +472,8 @@ MagickExport MagickBooleanType IdentifyImage(Image *image,FILE *file,
       if (limit != (const char *) NULL)
         max_locations=StringToUnsignedLong(limit);
       channel_statistics=GetLocationStatistics(image,type,exception);
+      if (channel_statistics == (ChannelStatistics *) NULL)
+        return(MagickFalse);
       colorspace=image->colorspace;
       if (IsImageGray(image,exception) != MagickFalse)
         colorspace=GRAYColorspace;
@@ -660,6 +659,8 @@ MagickExport MagickBooleanType IdentifyImage(Image *image,FILE *file,
         depth;
 
       channel_statistics=GetImageStatistics(image,exception);
+      if (channel_statistics == (ChannelStatistics *) NULL)
+        return(MagickFalse);
       artifact=GetImageArtifact(image,"identify:features");
       if (artifact != (const char *) NULL)
         {
index d4b852487db8f76883fb491bd4e1627c03d9ae9b..59b2142dc673d8e1567fcbc48f6ca453740176cb 100644 (file)
@@ -1534,7 +1534,7 @@ MagickExport ChannelStatistics *GetImageStatistics(const Image *image,
   channel_statistics=(ChannelStatistics *) AcquireQuantumMemory(
     MaxPixelChannels+1,sizeof(*channel_statistics));
   if (channel_statistics == (ChannelStatistics *) NULL)
-    ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
+    return(MagickFalse);
   (void) ResetMagickMemory(channel_statistics,0,(MaxPixelChannels+1)*
     sizeof(*channel_statistics));
   for (i=0; i <= (ssize_t) MaxPixelChannels; i++)
@@ -1671,6 +1671,9 @@ MagickExport ChannelStatistics *GetImageStatistics(const Image *image,
       channel_statistics[i].mean)*(standard_deviation*standard_deviation*
       standard_deviation*standard_deviation)-3.0;
   }
+  if (y < (ssize_t) image->rows)
+    channel_statistics=(ChannelStatistics *) RelinquishMagickMemory(
+      channel_statistics);
   return(channel_statistics);
 }
 \f