aboutsummaryrefslogtreecommitdiff
path: root/lib/libexif/ExifParse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libexif/ExifParse.cpp')
-rwxr-xr-x[-rw-r--r--]lib/libexif/ExifParse.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/libexif/ExifParse.cpp b/lib/libexif/ExifParse.cpp
index 635d82f600..64bb815ced 100644..100755
--- a/lib/libexif/ExifParse.cpp
+++ b/lib/libexif/ExifParse.cpp
@@ -823,9 +823,18 @@ void CExifParse::GetLatLong(
{
Values[a] = ConvertAnyFormat(ValuePtr+a*ComponentSize, Format);
}
- char latLong[30];
- sprintf(latLong, "%3.0fd %2.0f' %5.2f\"", Values[0], Values[1], Values[2]);
- strcat(latLongString, latLong);
+ if (Values[0] < 0 || Values[0] > 180 || Values[1] < 0 || Values[1] >= 60 || Values[2] < 0 || Values[2] >= 60)
+ {
+ // Ignore invalid values (DMS format expected)
+ ErrNonfatal("Invalid Lat/Long value", 0, 0);
+ latLongString[0] = 0;
+ }
+ else
+ {
+ char latLong[30];
+ sprintf(latLong, "%3.0fd %2.0f' %5.2f\"", Values[0], Values[1], Values[2]);
+ strcat(latLongString, latLong);
+ }
}
}