# UNDF: UNDF-2026-000000495 # OSRM — CWE-407 Scan Result: CLEAN ## Scan Date 2026-03-27 ## Files Scanned - `src/engine/routing_algorithms/alternative_path_ch.cpp` - `src/engine/routing_algorithms/alternative_path_mld.cpp` - `src/engine/routing_algorithms/routing_base_ch.cpp` - `src/engine/routing_algorithms/routing_base_mld.cpp` - `src/engine/routing_algorithms/shortest_path.cpp` - `src/contractor/` (full directory) - `src/extractor/` (full directory) ## Findings **No CWE-407 defects found in routing hot paths.** OSRM explicitly uses appropriate O(1) data structures: - `alternative_path_ch.cpp` line 638: `std::unordered_set nodes_in_path` — correct O(1) node membership for path sharing calculation - `alternative_path_mld.cpp` line 292: `std::unordered_set cells` — correct O(1) cell membership for path deduplication - `std::find` uses found: all on small bounded vectors (trip waypoints, class names, via lists) — not in O(N) traversal loops ## Notes OSRM's CH alternative path solver (`alternative_path_ch.cpp`) demonstrates the correct pattern that GraphHopper's `AlternativeRouteCH.java` should follow: the shortest path node set is built as `std::unordered_set` before iterating the search space, giving O(1) membership tests during the O(E) sweep.