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 |