From a7b9b1f07ae778b392a55411787b7ec9956ec7d8 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Mon, 4 Apr 2022 12:22:28 +0100 Subject: [PATCH] Trap possible divide-by-zero in getNavigationFrequency --- src/SparkFun_u-blox_GNSS_Arduino_Library.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp b/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp index fc6f574..e7fea5a 100644 --- a/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp +++ b/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp @@ -15978,6 +15978,15 @@ uint8_t SFE_UBLOX_GNSS::getNavigationFrequency(uint16_t maxWait) uint16_t measurementRate = packetUBXCFGRATE->data.measRate; + if (measurementRate == 0) + { + #ifndef SFE_UBLOX_REDUCED_PROG_MEM + if ((_printDebug == true) || (_printLimitedDebug == true)) // This is important. Print this if doing limited debugging + _debugSerial->println(F("getNavigationFrequency: zero measRate!")); + #endif + return(0); // Avoid divide-by-zero error + } + measurementRate = 1000 / measurementRate; // This may return an int when it's a float, but I'd rather not return 4 bytes return (measurementRate); }