From ff015c8714e13db42662b973b9da42468e23a9a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20T=C5=AFma?= Date: Fri, 5 May 2017 09:00:57 +0200 Subject: [PATCH] Added missing data validity checks --- src/offlinemap.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/offlinemap.cpp b/src/offlinemap.cpp index 5469007f..49fe1093 100644 --- a/src/offlinemap.cpp +++ b/src/offlinemap.cpp @@ -121,7 +121,10 @@ int OfflineMap::parse(QIODevice &device, QList &points, p.xy = QPoint(x, y); if (ll) { p.ll = Coordinates(lond + lonm/60.0, latd + latm/60.0); - points.append(p); + if (p.ll.isValid()) + points.append(p); + else + return ln; } else if (pp) { p.pp = QPointF(ppx, ppy); setup.zone = zone; @@ -205,6 +208,14 @@ bool OfflineMap::createProjection(const QString &datum, return false; } + if (setup.latitudeOrigin < -90.0 || setup.latitudeOrigin > 90.0 + || setup.longitudeOrigin < -180.0 || setup.longitudeOrigin > 180.0 + || setup.standardParallel1 < -90 || setup.standardParallel1 > 90 + || setup.standardParallel2 < -90 || setup.standardParallel2 > 90) { + _errorString = "Invalid projection setup"; + return false; + } + if (projection == "Mercator") _projection = new Mercator(); else if (projection == "Transverse Mercator")