[gimp/metadata-wip-rebased: 13/20] libgimpbase: fix crash in gimp_metadata_get_resolution()



commit ecdf4f1a4d7d440953e88cafed47ab630f3c2f88
Author: Michael Natterer <mitch gimp org>
Date:   Wed Oct 23 12:17:27 2013 +0200

    libgimpbase: fix crash in gimp_metadata_get_resolution()

 libgimpbase/gimpmetadata.c |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)
---
diff --git a/libgimpbase/gimpmetadata.c b/libgimpbase/gimpmetadata.c
index 8ccd04c..8c34033 100644
--- a/libgimpbase/gimpmetadata.c
+++ b/libgimpbase/gimpmetadata.c
@@ -626,20 +626,31 @@ gimp_metadata_get_resolution (GimpMetadata *metadata,
   gchar  *xr;
   gchar  *yr;
   gchar  *un;
-  gint    exif_unit;
-  gchar **xnom   = NULL;
-  gchar **xdenom = NULL;
-  gchar **ynom   = NULL;
-  gchar **ydenom = NULL;
+  gint    exif_unit = 2;
+  gchar **xnom      = NULL;
+  gchar **xdenom    = NULL;
+  gchar **ynom      = NULL;
+  gchar **ydenom    = NULL;
 
   g_return_val_if_fail (GEXIV2_IS_METADATA (metadata), FALSE);
 
   xr = gexiv2_metadata_get_tag_string (metadata, "Exif.Image.XResolution");
   yr = gexiv2_metadata_get_tag_string (metadata, "Exif.Image.YResolution");
 
+  if (! (xr && yr))
+    {
+      g_free (xr);
+      g_free (yr);
+      return FALSE;
+    }
+
   un = gexiv2_metadata_get_tag_string (metadata, "Exif.Image.ResolutionUnit");
-  exif_unit = atoi (un);
-  g_free (un);
+
+  if (un)
+    {
+      exif_unit = atoi (un);
+      g_free (un);
+    }
 
   if (exif_unit == 3)
     *unit = GIMP_UNIT_MM;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]