diff --git a/plugins/input/geojson/geojson_datasource.cpp b/plugins/input/geojson/geojson_datasource.cpp index ea0af9317..614621102 100644 --- a/plugins/input/geojson/geojson_datasource.cpp +++ b/plugins/input/geojson/geojson_datasource.cpp @@ -274,6 +274,7 @@ void geojson_datasource::initialise_index(Iterator start, Iterator end) try { mapnik::json::extract_bounding_boxes(itr, end, boxes); + if (itr != end || boxes.empty()) throw std::exception(); // bulk insert initialise r-tree tree_ = std::make_unique(boxes); // calculate total extent @@ -365,9 +366,7 @@ void geojson_datasource::parse_geojson(Iterator start, Iterator end) { boxes_type boxes; mapnik::json::extract_bounding_boxes(itr, end, boxes); - - if (itr != end) throw std::runtime_error("Malformed GeoJSON"); //ensure we've consumed all input - + if (itr != end || boxes.empty()) throw std::exception(); //ensure we've consumed all input and we extracted at least one bbox; for (auto const& item : boxes) { auto const& geometry_index = std::get<1>(item);