From 75ba542c38c9c1c09b4dfc2b9606e4b0ac4173fb Mon Sep 17 00:00:00 2001 From: Dennis Luxen Date: Tue, 15 Feb 2011 17:00:39 +0000 Subject: [PATCH] Sanity checks for upper/lower bounds on the lat/lon coordinates. Fixes several segfaults. --- Plugins/LocatePlugin.h | 5 +++++ Plugins/RoutePlugin.h | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/Plugins/LocatePlugin.h b/Plugins/LocatePlugin.h index bc1483bca..2903edce1 100644 --- a/Plugins/LocatePlugin.h +++ b/Plugins/LocatePlugin.h @@ -51,6 +51,11 @@ public: int lat = static_cast(100000.*atof(parameters[0].c_str())); int lon = static_cast(100000.*atof(parameters[1].c_str())); + + if(lat>90*100000 || lat <-90*100000 || lon>180*100000 || lon <-180*100000) { + reply = http::Reply::stockReply(http::Reply::badRequest); + return; + } //query to helpdesk _Coordinate result; nodeHelpDesk->findNearestNodeCoordForLatLon(_Coordinate(lat, lon), result); diff --git a/Plugins/RoutePlugin.h b/Plugins/RoutePlugin.h index 570adbb62..628ab9050 100644 --- a/Plugins/RoutePlugin.h +++ b/Plugins/RoutePlugin.h @@ -81,6 +81,16 @@ public: int lat2 = static_cast(100000.*atof(parameters[2].c_str())); int lon2 = static_cast(100000.*atof(parameters[3].c_str())); + if(lat1>90*100000 || lat1 <-90*100000 || lon1>180*100000 || lon1 <-180*100000) { + reply = http::Reply::stockReply(http::Reply::badRequest); + return; + } + + if(lat2>90*100000 || lat2 <-90*100000 || lon2>180*100000 || lon2 <-180*100000) { + reply = http::Reply::stockReply(http::Reply::badRequest); + return; + } + _Coordinate startCoord(lat1, lon1); _Coordinate targetCoord(lat2, lon2);