Hello Daniel,

There is one more bug in gpscorrelate. It segfaults if run with --show
on some files, like this one:
   
http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=example.jpg;att=1;bug=487873

% gpscorrelate --show example.jpg
EXIF-GPS Photo matching program.
Daniel Foote, 2005.

zsh: segmentation fault  gpscorrelate --show example.jpg

Segmentation fault is in this code from exif-gps.cpp:
    GPSData = ExifRead["Exif.GPSInfo.GPSLatitude"];

Tag "Exif.GPSInfo.GPSLatitude" does not exist in this jpg file.

GPSData is defined as reference: 
    Exiv2::Exifdatum& GPSData = ExifRead["Exif.GPSInfo.GPSVersionID"];

Defining it as value fixes this bug:
    Exiv2::Exifdatum GPSData = ExifRead["Exif.GPSInfo.GPSVersionID"];

Patch is attached to this mail.

Note: here is assumed that all patches that i already sent you are applied,
otherwise gpscorrelate may fail in other place.

Regards,
Eugeniy Meshcheryakov
diff --git a/debian/changelog b/debian/changelog
index 9e21232..3e34b7e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+gpscorrelate (1.5.8-4) unstable; urgency=low
+
+  * Fix crash with incomplete GPS tags and --show (closes: #487873, again)
+
+ -- Євгеній Мещеряков <eu...@debian.org>  Sat, 07 Mar 2009 23:01:45 +0100
+
 gpscorrelate (1.5.8-3) unstable; urgency=low
 
   * Fix crash on incomplete (?) gps tags. Thanks Giovanni Mascellani
diff --git a/exif-gps.cpp b/exif-gps.cpp
index ad6f762..fb9f2cb 100644
--- a/exif-gps.cpp
+++ b/exif-gps.cpp
@@ -189,7 +189,7 @@ char* ReadExifData(char* File, double* Lat, double* Long, double* Elev, int* Inc
 	strcpy(Copy, Value.c_str());
 	
 	// Check if we have GPS tags.
-	Exiv2::Exifdatum& GPSData = ExifRead["Exif.GPSInfo.GPSVersionID"];
+	Exiv2::Exifdatum GPSData = ExifRead["Exif.GPSInfo.GPSVersionID"];
 
 	Value = GPSData.toString();
 

Attachment: signature.asc
Description: Digital signature

Reply via email to