diff --git a/CHANGELOG b/CHANGELOG index 9e00bc96c..11c2b1beb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,8 @@ # Nmap Changelog ($Id$); -*-text-*- +o Fix a small bug in traceroute progress output which neglected printing + when it was completed. This caused weirdness, especially when multiple + hosts were scanned. [Kris] + o Fix a portability problem related to the new traceroute functionality so that it compiles on Mac OS X. Thanks to Christophe Thil for reporting the problem and sending the 1-line fix. diff --git a/traceroute.cc b/traceroute.cc index f03b68914..ac4e98e91 100644 --- a/traceroute.cc +++ b/traceroute.cc @@ -218,7 +218,6 @@ Traceroute::Traceroute (const char *device_name, devtype type) { /* rely on each group using the same device */ pd = my_pcap_open_live (device_name, 100, o.spoofsource ? 1 : 0, 2); - SPM = new ScanProgressMeter ("Traceroute"); scaninfo.initial_proto = IPPROTO_IP; scaninfo.open_response = 0; @@ -304,8 +303,6 @@ Traceroute::~Traceroute () { free(hops); for (; it != TraceGroups.end (); ++it) delete (it->second); - assert(SPM != NULL); - delete (SPM); if (ethsd) ethsd = NULL; close (fd); @@ -789,6 +786,7 @@ Traceroute::trace (vector < Target * >&Targets) { TraceProbe *tp = NULL; TraceGroup *tg = NULL; Target *t = NULL; + ScanProgressMeter *SPM; u16 total_size, total_complete; if (o.af () == AF_INET6) { @@ -816,6 +814,8 @@ Traceroute::trace (vector < Target * >&Targets) { * legitimate to trace to */ sendTTLProbes (Targets, valid_targets); + SPM = new ScanProgressMeter ("Traceroute"); + while (!readTraceResponses ()) { for (targ = valid_targets.begin (); targ != valid_targets.end (); ++targ) { t = *targ; @@ -861,6 +861,8 @@ Traceroute::trace (vector < Target * >&Targets) { swap (total_complete, total_size); SPM->printStats (MIN ((double) total_complete / total_size, 0.99), NULL); } + SPM->endTask(NULL, NULL); + delete (SPM); } /* Resolves traceroute hops through nmaps diff --git a/traceroute.h b/traceroute.h index 2bdd8776d..add999b47 100644 --- a/traceroute.h +++ b/traceroute.h @@ -317,7 +317,6 @@ class Traceroute { struct scan_info scaninfo; - ScanProgressMeter *SPM; Target **hops; pcap_t *pd; eth_t *ethsd;