mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 06:28:27 -04:00
AC_Fence: Fix int32_t overflow with large longitude values
This commit is contained in:
parent
560943d6e0
commit
43e06e9040
@ -1186,8 +1186,11 @@ bool AC_PolyFence_loader::get_return_point(Vector2l &ret)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.x = ((min_loc.x+max_loc.x)/2);
|
// Potential for int32_t overflow when longitudes are beyond [-107, 107].
|
||||||
ret.y = ((min_loc.y+max_loc.y)/2);
|
// As a result, the calculated return point's longitude is calculated using overflowed figure.
|
||||||
|
// Dividing first before adding avoids the potential overflow.
|
||||||
|
ret.x = (min_loc.x / 2) + (max_loc.x / 2);
|
||||||
|
ret.y = (min_loc.y / 2) + (max_loc.y / 2);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user