From b9ad0f9391170bae589b7c7d2167b414d4581d0f Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Fri, 2 Apr 2021 08:09:28 -0700 Subject: [PATCH] [cli] avoid div-by-zero in `HandlePingStatistics()` (#6394) --- src/cli/cli.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 4fe634d79..8ad91a50a 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -3163,18 +3163,21 @@ void Interpreter::HandlePingStatistics(const otPingSenderStatistics *aStatistics void Interpreter::HandlePingStatistics(const otPingSenderStatistics *aStatistics) { OutputFormat("%u packets transmitted, %u packets received.", aStatistics->mSentCount, aStatistics->mReceivedCount); - if (!aStatistics->mIsMulticast) + + if ((aStatistics->mSentCount != 0) && !aStatistics->mIsMulticast) { uint32_t packetLossRate = 1000 * (aStatistics->mSentCount - aStatistics->mReceivedCount) / aStatistics->mSentCount; OutputFormat(" Packet loss = %u.%u%%.", packetLossRate / 10, packetLossRate % 10); } + if (aStatistics->mReceivedCount != 0) { uint32_t avgRoundTripTime = 1000 * aStatistics->mTotalRoundTripTime / aStatistics->mReceivedCount; OutputFormat(" Round-trip min/avg/max = %u/%u.%u/%u ms.", aStatistics->mMinRoundTripTime, avgRoundTripTime / 1000, avgRoundTripTime % 1000, aStatistics->mMaxRoundTripTime); } + OutputLine(""); }