1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-06 04:31:29 +00:00

Only warn about protocol specs in port list with -p. Fixes #2135

This commit is contained in:
dmiller
2020-10-06 18:44:12 +00:00
parent 9238e6c363
commit ee6bc18844
2 changed files with 49 additions and 32 deletions

30
nmap.cc
View File

@@ -1534,6 +1534,36 @@ void apply_delayed_options() {
else
getpts((char *) (o.fastscan ? "[P:0-]" : "0-"), &ports); // Default protocols to scan
} else if (!o.noportscan) {
if (o.portlist) {
for (const char *p=o.portlist; *p != '\0'; p++) {
if (*(p+1) == ':') {
switch(*p) {
case 'T':
if (!o.TCPScan()) {
error("WARNING: Your ports include \"T:\" but you haven't specified any TCP scan type.");
}
break;
case 'U':
if (!o.UDPScan()) {
error("WARNING: Your ports include \"U:\" but you haven't specified UDP scan with -sU.");
}
break;
case 'S':
if (!o.SCTPScan()) {
error("WARNING: Your ports include \"S:\" but you haven't specified any SCTP scan type.");
}
break;
case 'P':
if (!o.ipprotscan) {
error("WARNING: Your ports include \"P:\" but you haven't specified IP Protocol scan with -sO.");
}
break;
default:
break;
}
}
}
}
gettoppts(o.topportlevel, o.portlist, &ports, o.exclude_portlist);
}

View File

@@ -337,40 +337,27 @@ static void getpts_aux(const char *origexpr, int nested, u8 *porttbl, int range_
while (isspace((int) (unsigned char) *current_range))
current_range++; /* I don't know why I should allow spaces here, but I will */
if (change_range_type) {
if (*current_range == 'T' && *(current_range+1) == ':') {
current_range += 2;
if (change_range_type && *(current_range+1) == ':') {
switch (*current_range) {
case 'T':
range_type = SCAN_TCP_PORT;
if (!o.TCPScan()) {
error("WARNING: Your ports include \"T:\" but you haven't specified any TCP scan type.");
}
continue;
}
if (*current_range == 'U' && *(current_range+1) == ':') {
current_range += 2;
break;
case 'U':
range_type = SCAN_UDP_PORT;
if (!o.UDPScan()) {
error("WARNING: Your ports include \"U:\" but you haven't specified UDP scan with -sU.");
}
continue;
}
if (*current_range == 'S' && *(current_range+1) == ':') {
current_range += 2;
break;
case 'S':
range_type = SCAN_SCTP_PORT;
if (!o.SCTPScan()) {
error("WARNING: Your ports include \"S:\" but you haven't specified any SCTP scan type.");
}
continue;
}
if (*current_range == 'P' && *(current_range+1) == ':') {
current_range += 2;
break;
case 'P':
range_type = SCAN_PROTOCOLS;
if (!o.ipprotscan) {
error("WARNING: Your ports include \"P:\" but you haven't specified IP Protocol scan with -sO.");
break;
default:
fatal("Error parsing port list: Unknown protocol specifier '%c'.", *current_range);
break;
}
current_range += 2;
continue;
}
}
if (*current_range == '[') {
if (nested)