diff options
| author | 2026-02-16 17:24:19 +0100 | |
|---|---|---|
| committer | 2026-07-09 09:59:28 +0200 | |
| commit | 36d0d50548ea4d2e0f7b91b6e1fc9ee0e238d954 (patch) | |
| tree | 95d3653d39cb1c3354b86ed8388a60233d3f8670 /src/main/java/com | |
| parent | 1345ecdc0671803df97690e39961518dd9e5a8cf (diff) | |
Added checks to prevent illegal port numbers
Diffstat (limited to 'src/main/java/com')
| -rw-r--r-- | src/main/java/com/it_jaros/networkScanner/PortRange.java | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/main/java/com/it_jaros/networkScanner/PortRange.java b/src/main/java/com/it_jaros/networkScanner/PortRange.java index 6f1c529..74bed2a 100644 --- a/src/main/java/com/it_jaros/networkScanner/PortRange.java +++ b/src/main/java/com/it_jaros/networkScanner/PortRange.java @@ -21,25 +21,50 @@ public class PortRange { } String[] splitComma = ports.split(","); - for (String commaValue: splitComma) { + for (String commaValue : splitComma) { if (commaValue.contains("-")) { String[] rangeValue = commaValue.split("-"); if (rangeValue.length > 2) { throw new IllegalArgumentException(String.format("Argument contains too many '-'' %s", commaValue)); } - + int start = Integer.parseInt(rangeValue[0]); int end = Integer.parseInt(rangeValue[1]); + checkValues(start, end); specifiedPorts.set(start, end + 1); } else { + int port = Integer.parseInt(commaValue); + checkValue(port); specifiedPorts.set(Integer.parseInt(commaValue)); } } - + availablePorts.or(specifiedPorts); cursor = availablePorts.nextSetBit(MIN_PORT); } + private void checkValues(int start, int end) { + checkValue(start); + checkValue(end); + + if (start >= end) { + throw new IllegalArgumentException( + String.format("Start value cannot be equal or bigger than end value '%s >= %s'", start, end)); + } + } + + private void checkValue(int port) { + if (port < MIN_PORT) { + throw new IllegalArgumentException( + String.format("Start value smaller than allowed range %s < %s", port, MIN_PORT)); + } + + if (port > MAX_PORT) { + throw new IllegalArgumentException( + String.format("End value bigger than allowed range %s > %s", port, MAX_PORT)); + } + } + public synchronized int next() { int p = availablePorts.nextSetBit(cursor); if (p > 0) { |
