From 7b78270f4bb8437ab1e69e8b8d8e4037f2f86276 Mon Sep 17 00:00:00 2001 From: Dennis Luxen Date: Mon, 2 Jun 2014 19:23:50 +0200 Subject: [PATCH] safe-guard against broken input data --- Extractor/ExtractorCallbacks.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Extractor/ExtractorCallbacks.cpp b/Extractor/ExtractorCallbacks.cpp index 4acc19a4f..f493400d3 100644 --- a/Extractor/ExtractorCallbacks.cpp +++ b/Extractor/ExtractorCallbacks.cpp @@ -68,6 +68,11 @@ void ExtractorCallbacks::ProcessWay(ExtractionWay &parsed_way) return; } + if (parsed_way.path.size() <= 1) + { // safe-guard against broken data + return; + } + if (std::numeric_limits::max() == parsed_way.id) { SimpleLogger().Write(logDEBUG) << "found bogus way with id: " << parsed_way.id @@ -110,7 +115,7 @@ void ExtractorCallbacks::ProcessWay(ExtractionWay &parsed_way) const bool split_bidirectional_edge = (parsed_way.backward_speed > 0) && (parsed_way.speed != parsed_way.backward_speed); - for (unsigned n = 0; n < parsed_way.path.size() - 1; ++n) + for (unsigned n = 0; n < (parsed_way.path.size() - 1); ++n) { external_memory.all_edges_list.push_back(InternalExtractorEdge( parsed_way.path[n],