Mercurial > hg > forks > geeqie
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'");