diff --git a/TargetGroup.cc b/TargetGroup.cc index 872e8c2f6..b371ba48a 100644 --- a/TargetGroup.cc +++ b/TargetGroup.cc @@ -160,6 +160,9 @@ extern NmapOps o; class NetBlock { public: virtual ~NetBlock() {} + NetBlock() : resolveall(false) { + current_addr = resolvedaddrs.begin(); + } std::string hostname; std::list resolvedaddrs; std::list unscanned_addrs; @@ -473,7 +476,7 @@ bool NetBlockIPv4Ranges::next(struct sockaddr_storage *ss, size_t *sslen) { break; } if (i >= 4) { - if (this->resolveall && current_addr != this->resolvedaddrs.end() && ++current_addr != this->resolvedaddrs.end()) { + if (this->resolveall && !this->resolvedaddrs.empty() && current_addr != this->resolvedaddrs.end() && ++current_addr != this->resolvedaddrs.end()) { this->set_addr((struct sockaddr_in *) &*current_addr); } else { @@ -634,7 +637,7 @@ bool NetBlockIPv6Netmask::next(struct sockaddr_storage *ss, size_t *sslen) { struct sockaddr_in6 *sin6; if (this->exhausted){ - if (this->resolveall && current_addr != this->resolvedaddrs.end() && ++current_addr != this->resolvedaddrs.end()) { + if (this->resolveall && !this->resolvedaddrs.empty() && current_addr != this->resolvedaddrs.end() && ++current_addr != this->resolvedaddrs.end()) { this->set_addr((struct sockaddr_in6 *) &*current_addr); } else {