1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-15 04:09:01 +00:00

Fix the test for an IPv4 packet in readip_pcap. It was checking this condition:

(*p & 0x40) == 0x40
But that doesn't check that the upper half of the byte is 4. It's true for 4,
5, 6, 7, 12, 13, 14, and 15. I changed it to
	(*p & 0xF0) == 0x40
This commit is contained in:
david
2009-11-07 02:03:07 +00:00
parent cb8c8bd804
commit d7cae0a753

View File

@@ -2342,7 +2342,7 @@ char *readip_pcap(pcap_t *pd, unsigned int *len, long to_usec,
}
p += offset;
}
if (!p || (*p & 0x40) != 0x40) {
if (!p || (*p & 0xF0) != 0x40) {
/* Should we timeout? */
if (to_usec == 0) {
timedout = 1;
@@ -2353,7 +2353,7 @@ char *readip_pcap(pcap_t *pd, unsigned int *len, long to_usec,
}
}
}
} while (!timedout && (!p || (*p & 0x40) != 0x40)); /* Go until we get IPv4 packet */
} while (!timedout && (!p || (*p & 0xF0) != 0x40)); /* Go until we get IPv4 packet */
if (timedout) {
*len = 0;