nmap/nmap-unsolicited_arp_assert...

33 lines
1.2 KiB
Diff

From 33f421fd6e68fcb8ed50071661d9704717c81b2b Mon Sep 17 00:00:00 2001
From: dmiller <dmiller@e0a8ed71-7df4-0310-8962-fdc924857419>
Date: Tue, 3 Dec 2019 17:04:13 +0000
Subject: [PATCH] Avoid assertion failure when unsolicited ARP response
received
We probably want a more explicit handling of the case where we get an
ARP response to a request that we did not send (system's own, or another
Nmap scan running at the same time). In any case, this ought to solve
the crashes reported as #1797 and #1764.
---
scan_engine.cc | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/scan_engine.cc b/scan_engine.cc
index bd73cc8ead..7a4766da26 100644
--- a/scan_engine.cc
+++ b/scan_engine.cc
@@ -1275,7 +1275,12 @@ int UltraScanInfo::removeCompletedHosts() {
}
if (timedout)
gstats->num_hosts_timedout++;
- hss->target->stopTimeOutClock(&now);
+ /* We may have received an ARP response before we sent a probe, which
+ * would mean the timeout clock is not running. Avoid an assertion
+ * failure here by checking first. */
+ if (hss->target->timeOutClockRunning()) {
+ hss->target->stopTimeOutClock(&now);
+ }
}
}
return hostsRemoved;