changeset 2811:579554d940e7

Bug fix: Crash when GPSInfo contains illegal characters If Exif.GPSInfo contains unexpected characters, it can cause a seg. fault when passed to atof().
author Colin Clark <colin.clark@cclark.uk>
date Fri, 10 Aug 2018 10:06:19 +0100
parents 8438d30abd31
children 865f7eab9b6d
files src/exif-common.c
diffstat 1 files changed, 11 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/exif-common.c	Mon Aug 06 12:55:46 2018 +0100
+++ b/src/exif-common.c	Fri Aug 10 10:06:19 2018 +0100
@@ -812,8 +812,17 @@
 	text_latitude_ref = exif_get_data_as_text(exif, "Exif.GPSInfo.GPSLatitudeRef");
 	text_longitude_ref = exif_get_data_as_text(exif, "Exif.GPSInfo.GPSLongitudeRef");
 
-	if (text_latitude && text_longitude && text_latitude_ref &&
-						text_longitude_ref)
+	if ((text_latitude && g_strrstr(text_latitude, "deg")) &&
+		(text_longitude && g_strrstr(text_longitude, "deg")) &&
+		(
+			(text_latitude_ref && g_strrstr(text_latitude_ref, "N")) ||
+			(text_latitude_ref && g_strrstr(text_latitude_ref, "S"))
+		) &&
+		(
+			(text_longitude_ref && g_strrstr(text_longitude_ref, "E")) ||
+			(text_longitude_ref && g_strrstr(text_longitude_ref, "W"))
+		)
+		)
 		{
 		lat_deg = strtok(text_latitude, "deg'");
 		lat_min = strtok(NULL, "deg'");