Although we check for valid coordinates in the table plugin via
`check_all_coordinates`, we do not check for #srcs > 0 and #dsts > 0.
This would be fine as the grammar parser combines adding coordinates and
setting their `is_source` and `is_destination` property, which makes
adding coordinates without specifying source or destination impossible.
See: route_parameters.cpp, AddSource, AddDestination, and api_grammar.hpp
In contract, the Polyline codepath does not do this! In fact, it only lets
you set coordinates, but not their `is_source` or `is_destination` property.
See: route_parameters.cpp, SetCoordinatesFromGeometry
Therefore, the following queries only set coordinates:
http 'http://localhost:5000/table?locs=s_hhFg{arEgEfEgEfEgEfEgEfEgEfEgEfEgEfEgEfEgEfE'
http 'http://localhost:5000/table?locs=_p~iF~ps|U_ulLnnqC_mqNvxq`@'
but fail to specify sources and targets!
The distance table plugin now assumes `is_course` and `is_destination`
is the same size as `coordinates`.
And happily accesses uninitialized memory.
|
||
|---|---|---|
| .. | ||
| datafacade | ||
| guidance | ||
| map_matching | ||
| plugins | ||
| routing_algorithms | ||
| trip | ||
| api_response_generator.hpp | ||
| douglas_peucker.hpp | ||
| engine_config.hpp | ||
| engine.hpp | ||
| geospatial_query.hpp | ||
| internal_route_result.hpp | ||
| object_encoder.hpp | ||
| phantom_node.hpp | ||
| polyline_compressor.hpp | ||
| polyline_formatter.hpp | ||
| route_name_extraction.hpp | ||
| route_parameters.hpp | ||
| search_engine_data.hpp | ||
| search_engine.hpp | ||
| segment_information.hpp | ||