diff options
| author | 2026-08-18 13:02:46 +0200 | |
|---|---|---|
| committer | 2026-08-18 13:03:50 +0200 | |
| commit | f4dd41da30ff8ececfdc95a80ce9eaf68efd9368 (patch) | |
| tree | a5f8b0b3526b33044c4c68976ec7f2acff3aa8bc /src/main/java/com | |
| parent | 05f310d93981922805dee6ca9d5de30718577600 (diff) | |
Removed possibility of setting timeout to 0 which would mean no wait at
all.
Diffstat (limited to 'src/main/java/com')
| -rw-r--r-- | src/main/java/com/it_jaros/jns/CliParser.java | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/main/java/com/it_jaros/jns/CliParser.java b/src/main/java/com/it_jaros/jns/CliParser.java index 11ddef1..5efc30f 100644 --- a/src/main/java/com/it_jaros/jns/CliParser.java +++ b/src/main/java/com/it_jaros/jns/CliParser.java @@ -4,6 +4,7 @@ import com.it_jaros.jns.scan.ScanOptions; import java.util.HashSet; import java.util.Set; +import java.util.function.Function; public class CliParser { @@ -37,7 +38,7 @@ public class CliParser { bannerRecognition = true; break; case "--delay", "-d": - delayInMillis = parseIntOption(args, ++i, currentArg); + delayInMillis = parseIntOption(args, ++i, currentArg, (Integer value) -> value >= 0); break; case "--disableOnlineCheck", "-do": disableOnlineCheck = true; @@ -49,10 +50,10 @@ public class CliParser { hostsFile = getArgument(args, ++i, currentArg); break; case "--hostsLimit", "-hl": - hostsLimit = parseIntOption(args, ++i, currentArg); + hostsLimit = parseIntOption(args, ++i, currentArg, (Integer value) -> value > 0); break; case "--workersPerHostLimit", "-whl": - workersPerHostLimit = parseIntOption(args, ++i, currentArg); + workersPerHostLimit = parseIntOption(args, ++i, currentArg, (Integer value) -> value > 0); break; case "--ports", "-p": ports = getArgument(args, ++i, currentArg); @@ -64,10 +65,10 @@ public class CliParser { showFilteredPorts = true; break; case "--socketLimit", "-sl": - socketLimit = parseIntOption(args, ++i, currentArg); + socketLimit = parseIntOption(args, ++i, currentArg, (Integer value) -> value > 0); break; case "--timeout", "-t": - timeoutInMillis = parseIntOption(args, ++i, currentArg); + timeoutInMillis = parseIntOption(args, ++i, currentArg, (Integer value) -> value > 0); break; default: throw new IllegalArgumentException("No such param " + currentArg); @@ -101,10 +102,14 @@ public class CliParser { return args[index]; } - private int parseIntOption(String[] args, int index, String option) { + private int parseIntOption(String[] args, int index, String option, Function<Integer, Boolean> validator) { String value = getArgument(args, index, option); try { - return Integer.parseInt(value); + int parsedValue = Integer.parseInt(value); + if (!validator.apply(parsedValue)) { + throw new IllegalArgumentException(String.format("Invalid value %s for argument %s", parsedValue, option)); + } + return parsedValue; } catch (NumberFormatException e) { throw new IllegalArgumentException(String.format("Invalid argument %s for option %s", value, option)); } @@ -129,7 +134,7 @@ public class CliParser { --quiet, -q:\t\t\tDo not output progress bar (Default: %b) --showFilteredPorts, -sf:\t\tShow also filtered ports (Default: %b) --socketLimit, -sl:\t\t\tSocket limit in total. You can not scan more ports than allowed here (Default: %d) - --timeout, -t:\t\t\tTimeout in millis per connection attempt, 0 means infinite (Default: %d) + --timeout, -t:\t\t\tTimeout in millis per connection attempt (Default: %d) """.formatted(CliDefaults.BANNER_RECOGNITION, CliDefaults.DELAY_IN_MILLIS, CliDefaults.DISABLE_HOST_CHECK, CliDefaults.MAX_HOSTS_LIMIT, CliDefaults.MAX_WORKERS_PER_HOST, CliDefaults.PORTS, CliDefaults.QUIET, CliDefaults.SHOW_FILTERED_PORTS, CliDefaults.SOCKET_LIMIT, CliDefaults.TIMEOUT_IN_MILLIS) ); usage.append(""" |
