logo       

[PATCH] Fix error message for -sO -p [>255]: msg#00081

security.nmap.devel

Subject: [PATCH] Fix error message for -sO -p [>255]

The attached patch fixes an error message bug when scanning IP protocols
and the only protocol numbers specified are > 255.

It was quitting with the "No ports specified" message because it just
excluded anything >255 and if all the protocol numbers were over (even
if only one is give), it failed to exit and just eventually hit an if()
that gives a wrong message. If one number was <256 and others weren't,
it just dropped them without saying anything.

I don't know if my patch accomplishes it the best way possible, but it
seems to work for it just fine.

It's a diff against 4.21ALPHA1

Thanks,
Kris Katterjohn
--- x/nmap.cc 2006-12-10 18:34:36.000000000 -0600
+++ y/nmap.cc 2006-12-17 18:47:54.000000000 -0600
@@ -1903,8 +1903,12 @@ struct scan_lists *getpts(char *origexpr
}
else if (isdigit((int) *current_range)) {
rangestart = strtol(current_range, &endptr, 10);
- if (rangestart < 0 || rangestart > 65535) {
- fatal("Ports to be scanned must be between 0 and 65535 inclusive");
+ if (o.ipprotscan) {
+ if (rangestart < 0 || rangestart > 255)
+ fatal("Protocols to be scanned must be between 0 and 255 inclusive");
+ } else {
+ if (rangestart < 0 || rangestart > 65535)
+ fatal("Ports to be scanned must be between 0 and 65535 inclusive");
}
/* if (rangestart == 0) {
error("WARNING: Scanning \"port 0\" is supported, but unusual.");
@@ -1925,8 +1929,12 @@ struct scan_lists *getpts(char *origexpr
rangeend = 65535;
} else if (isdigit((int) *current_range)) {
rangeend = strtol(current_range, &endptr, 10);
- if (rangeend < 0 || rangeend > 65535) {
- fatal("Ports to be scanned must be between 0 and 65535 inclusive");
+ if (o.ipprotscan) {
+ if (rangeend < 0 || rangeend > 255)
+ fatal("Protocols to be scanned must be between 0 and 255
inclusive");
+ } else {
+ if (rangeend < 0 || rangeend > 65535)
+ fatal("Ports to be scanned must be between 0 and 65535 inclusive");
}
current_range = endptr;
} else {
@@ -1948,7 +1956,7 @@ struct scan_lists *getpts(char *origexpr
tcpportcount++;
if (range_type & SCAN_UDP_PORT)
udpportcount++;
- if (range_type & SCAN_PROTOCOLS && rangestart < 256)
+ if (range_type & SCAN_PROTOCOLS)
protcount++;
porttbl[rangestart] |= range_type;
}

_______________________________________________
Sent through the nmap-dev mailing list
http://cgi.insecure.org/mailman/listinfo/nmap-dev
Archived at http://SecLists.Org
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise