mirror of
https://github.com/nmap/nmap.git
synced 2026-01-01 12:29:03 +00:00
Fixed a bug in --data-length parsing. User input was not being checked and in some cases that resulted in useless buffer allocations and unpredictable payload lengths. Check http://seclists.org/nmap-dev/2009/q2/0763.html for a complete description of the problem.
This commit is contained in:
14
nmap.cc
14
nmap.cc
@@ -900,13 +900,13 @@ int nmap_main(int argc, char *argv[]) {
|
||||
o.setVersionTrace(true);
|
||||
o.debugging++;
|
||||
} else if (optcmp(long_options[option_index].name, "data-length") == 0) {
|
||||
o.extra_payload_length = atoi(optarg);
|
||||
if (o.extra_payload_length < 0) {
|
||||
fatal("data-length must be greater than 0");
|
||||
} else if (o.extra_payload_length > 0) {
|
||||
o.extra_payload = (char *) safe_malloc(o.extra_payload_length);
|
||||
get_random_bytes(o.extra_payload, o.extra_payload_length);
|
||||
}
|
||||
o.extra_payload_length = (int)strtoll( optarg, NULL, 10);
|
||||
if (o.extra_payload_length < 1 || o.extra_payload_length > MAX_PAYLOAD_ALLOWED)
|
||||
fatal("data-length must be between 1 and %d", MAX_PAYLOAD_ALLOWED);
|
||||
if (o.extra_payload_length > 1400 ) /* 1500 - IP with opts - TCP with opts. */
|
||||
error("WARNING: Payloads bigger than 1400 bytes may not be sent successfully.");
|
||||
o.extra_payload = (char *) safe_malloc(o.extra_payload_length);
|
||||
get_random_bytes(o.extra_payload, o.extra_payload_length);
|
||||
} else if (optcmp(long_options[option_index].name, "send-eth") == 0) {
|
||||
o.sendpref = PACKET_SEND_ETH_STRONG;
|
||||
} else if (optcmp(long_options[option_index].name, "send-ip") == 0) {
|
||||
|
||||
Reference in New Issue
Block a user