]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/property.c
(no commit message)
[imagemagick] / MagickCore / property.c
index 15db9daf3f294c002e9adf04c2b90c63a74d1065..51a04aca817dfd81b24dfa5519e894bd62936c6f 100644 (file)
@@ -1306,6 +1306,8 @@ static MagickBooleanType GetEXIFProperty(const Image *image,
         break;
       components=(ssize_t) ((int) ReadPropertyLong(endian,q+4));
       number_bytes=(size_t) components*tag_bytes[format];
+      if (number_bytes < components)
+        break;  /* prevent overflow */
       if (number_bytes <= 4)
         p=q+8;
       else
@@ -2047,7 +2049,7 @@ MagickExport const char *GetImageProperty(const Image *image,
     {
       if (LocaleNCompare("fx:",property,3) == 0)
         {
-          fx_info=AcquireFxInfo(image,property+3);
+          fx_info=AcquireFxInfo(image,property+3,exception);
           status=FxEvaluateChannelExpression(fx_info,IntensityPixelChannel,0,0,
             &alpha,exception);
           fx_info=DestroyFxInfo(fx_info);
@@ -2093,7 +2095,7 @@ MagickExport const char *GetImageProperty(const Image *image,
             pixel;
 
           GetPixelInfo(image,&pixel);
-          fx_info=AcquireFxInfo(image,property+6);
+          fx_info=AcquireFxInfo(image,property+6,exception);
           status=FxEvaluateChannelExpression(fx_info,RedPixelChannel,0,0,
             &alpha,exception);
           pixel.red=(MagickRealType) QuantumRange*alpha;
@@ -2392,6 +2394,22 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info,
         }
       break;
     }
+    case 'r':
+    {
+      if (LocaleNCompare("resolution.x",property,11) == 0)
+        {
+          (void) FormatLocaleString(value,MaxTextExtent,"%g",
+            image->resolution.x);
+          break;
+        }
+      if (LocaleNCompare("resolution.y",property,11) == 0)
+        {
+          (void) FormatLocaleString(value,MaxTextExtent,"%g",
+            image->resolution.y);
+          break;
+        }
+      break;
+    }
     case 's':
     {
       if (LocaleNCompare("size",property,4) == 0)
@@ -2474,26 +2492,6 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info,
         }
       break;
     }
-    case 'x':
-    {
-      if (LocaleNCompare("xresolution",property,11) == 0)
-        {
-          (void) FormatLocaleString(value,MaxTextExtent,"%g",
-            image->resolution.x);
-          break;
-        }
-      break;
-    }
-    case 'y':
-    {
-      if (LocaleNCompare("yresolution",property,11) == 0)
-        {
-          (void) FormatLocaleString(value,MaxTextExtent,"%g",
-            image->resolution.y);
-          break;
-        }
-      break;
-    }
     case 'z':
     {
       if (LocaleNCompare("zero",property,4) == 0)
@@ -2562,7 +2560,8 @@ MagickExport char *GetNextImageProperty(const Image *image)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 %  InterpretImageProperties() replaces any embedded formatting characters with
-%  the appropriate image property and returns the interpreted text.
+%  the appropriate image property and returns the interpreted text.  Free with
+%  DestoryString() or RelinquishMagickMemory().
 %
 %  The format of the InterpretImageProperties method is:
 %