From 3528d773d21de9477333fecad05d97a39bf99f01 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 19 May 2019 08:17:59 +0200 Subject: [PATCH] Prevent dist calculation overflow --- radio/src/telemetry/telemetry_sensors.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/telemetry/telemetry_sensors.cpp b/radio/src/telemetry/telemetry_sensors.cpp index 37486192d..52098e6a5 100644 --- a/radio/src/telemetry/telemetry_sensors.cpp +++ b/radio/src/telemetry/telemetry_sensors.cpp @@ -355,11 +355,11 @@ void TelemetryItem::eval(const TelemetrySensor & sensor) } } uint32_t angle = abs(gpsItem.gps.latitude - gpsItem.pilotLatitude); - uint32_t dist = (EARTH_RADIUS * M_PI / 180) * angle / 1000000; + uint32_t dist = ((uint64_t )EARTH_RADIUS * M_PI / 180) * angle) / 1000000; uint32_t result = dist * dist; angle = abs(gpsItem.gps.longitude - gpsItem.pilotLongitude); - dist = gpsItem.distFromEarthAxis * angle / 1000000; + dist = ((uint64_t ) gpsItem.distFromEarthAxis * angle) / 1000000; result += dist * dist; // Length on ground (ignoring curvature of the earth)