mirror of
https://github.com/nmap/nmap.git
synced 2026-08-28 12:31:12 +00:00
Remove some duplication in get_pcap_result() in scan_engine.cc. probe->protocol() is all ready checked against ip2->ip_p earlier (the two I'm removing indirectly check against ip2->ip_p: look at the removed part and what ip2->ip_p is tested against in the surrounding if()s). Then a little lower in the function, that whole if() block can be removed because it's the same as what's done in that switch() block. The same error() and hdump() are used in the default case. I could've kept the if(), but this keeps is simple.
This commit is contained in:
parent
2ae3144aa7
commit
5036877865
1 changed files with 2 additions and 14 deletions
|
|
@ -3034,16 +3034,14 @@ static bool get_pcap_result(UltraScanInfo *USI, struct timeval *stime) {
|
|||
|
||||
if (ip2->ip_p == IPPROTO_TCP && !USI->prot_scan) {
|
||||
tcp = (struct tcp_hdr *) ((u8 *) ip2 + ip2->ip_hl * 4);
|
||||
if (probe->protocol() != IPPROTO_TCP ||
|
||||
ntohs(tcp->th_sport) != probe->sport() ||
|
||||
if (ntohs(tcp->th_sport) != probe->sport() ||
|
||||
ntohs(tcp->th_dport) != probe->dport() ||
|
||||
ntohl(tcp->th_seq) != probe->tcpseq())
|
||||
continue;
|
||||
} else if (ip2->ip_p == IPPROTO_UDP && !USI->prot_scan) {
|
||||
/* TODO: IPID verification */
|
||||
udp = (struct udp_hdr *) ((u8 *) ip2 + ip->ip_hl * 4);
|
||||
if (probe->protocol() != IPPROTO_UDP ||
|
||||
ntohs(udp->uh_sport) != probe->sport() ||
|
||||
if (ntohs(udp->uh_sport) != probe->sport() ||
|
||||
ntohs(udp->uh_dport) != probe->dport())
|
||||
continue;
|
||||
} else if (!USI->prot_scan) {
|
||||
|
|
@ -3051,16 +3049,6 @@ static bool get_pcap_result(UltraScanInfo *USI, struct timeval *stime) {
|
|||
}
|
||||
|
||||
if (icmp->icmp_type == 3) {
|
||||
if (icmp->icmp_code != 0 && icmp->icmp_code != 1 &&
|
||||
icmp->icmp_code != 2 &&
|
||||
icmp->icmp_code != 3 && icmp->icmp_code != 9 &&
|
||||
icmp->icmp_code != 10 && icmp->icmp_code != 13) {
|
||||
error("Unexpected ICMP type/code 3/%d unreachable packet:",
|
||||
icmp->icmp_code);
|
||||
hdump((unsigned char *)icmp, ntohs(ip->ip_len) -
|
||||
sizeof(struct ip));
|
||||
break;
|
||||
}
|
||||
switch(icmp->icmp_code) {
|
||||
case 0: /* Network unreachable */
|
||||
newstate = PORT_FILTERED;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue