]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/property.c
(no commit message)
[imagemagick] / MagickCore / property.c
index fae095e4e945d54e70ac82aa00560d4856f70acd..fd947edc8704985a83c8e6832960657308a8af49 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
@@ -1329,6 +1331,8 @@ static MagickBooleanType GetEXIFProperty(const Image *image,
             buffer[MaxTextExtent],
             *value;
 
+          value=(char *) NULL;
+          *buffer='\0';
           switch (format)
           {
             case EXIF_FMT_BYTE:
@@ -2366,6 +2370,13 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info,
             "true",MaxTextExtent);
           break;
         }
+      if (LocaleNCompare("orientation",property,11) == 0)
+        {
+          (void) FormatLocaleString(value,MaxTextExtent,"%s", 
+            CommandOptionToMnemonic(MagickOrientationOptions,(ssize_t) 
+            image->orientation));
+          break;
+        }
       if (LocaleNCompare("output",property,6) == 0)
         {
           (void) CopyMagickString(value,image_info->filename,MaxTextExtent);
@@ -2383,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)
@@ -2465,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)
@@ -2553,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:
 %