Nmap Development mailing list archives

Packet rate logging and division by zero


From: jah <jah () zadkiel plus com>
Date: Wed, 17 Dec 2008 01:39:40 +0000

Hi folks,

Overall sending rates: *1.#J* packets / s.

I've only been able to reproduce this on windows and it's fairly easy to
do with a connect scan to localhost (it doesn't always happen).  It
occurs before any packets are sent at the start of a scan after TIMING
STATS are printed.

double RateMeter::getOverallRate(const struct timeval *now) const {
  return total / elapsedTime(now);
}

if elapsedTime() returns 0, then RateMeter::getOverallRate returns
double "1.#INF000000000000" which somehow is turned into 1.#J by a %.2f
format string.

The attached timing.cc.patch will prevent division by zero and instead
return 0.

Regards,

jah
--- timing.cc.orig      2008-12-17 01:28:14.828125000 +0000
+++ timing.cc   2008-12-17 01:13:54.046875000 +0000
@@ -349,7 +349,8 @@
 }
 
 double RateMeter::getOverallRate(const struct timeval *now) const {
-  return total / elapsedTime(now);
+  double et_now = elapsedTime(now);
+  return et_now ? total / et_now : 0;
 }
 
 /* Get the "current" rate (actually a moving average of the last

_______________________________________________
Sent through the nmap-dev mailing list
http://cgi.insecure.org/mailman/listinfo/nmap-dev
Archived at http://SecLists.Org

Current thread: