From 0d78de59749993f69d5f083ff9fe326a7aaba734 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Sat, 11 Aug 2018 09:01:40 -0700 Subject: [PATCH] Fix potential unsigned integer overflow in find_polygons_for_source An invalid polygon will trigger overflow when `previous_rank` is `0` as `previous_rank - 1` will overflow. This can be detected by passing an invalid polygon like `[[8128,3600],[8224,3664],[8128,3600]]` into `boost::geometry::intersection` and compiling with `-fsanitize=undefined` --- .../boost/geometry/algorithms/detail/overlay/sort_by_side.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/geometry/algorithms/detail/overlay/sort_by_side.hpp b/include/boost/geometry/algorithms/detail/overlay/sort_by_side.hpp index 6b929373b..2e73b5f45 100644 --- a/include/boost/geometry/algorithms/detail/overlay/sort_by_side.hpp +++ b/include/boost/geometry/algorithms/detail/overlay/sort_by_side.hpp @@ -521,7 +521,7 @@ private : { rp& ranked = m_ranked_points[index]; - if (ranked.rank != previous_rank && ! in_polygon) + if (previous_rank > 0 && ranked.rank != previous_rank && ! in_polygon) { assign_ranks(last_from_rank, previous_rank - 1, 1); assign_ranks(last_from_rank + 1, previous_rank, 2);