[#2428] Proper fix of incorrect port range check
Motivation: In the Internet Protocol, the valid port number range is from 1 to 65535 (inclusive on the both side.) However, SocksCmdRequest and SocksCmdResponse refuses to construct itself when the port number 65535 is specified. Beside this it excepts 0 as port number which should not allowed. Modification: * Not raise an exception when the specified port number is 65535. * Raise an exception when the specified port number is 0 Result: Fixes #2428
This commit is contained in:
parent
01ef614e77
commit
80f1dfaec0
@ -63,7 +63,7 @@ public final class SocksCmdRequest extends SocksRequest {
|
||||
case UNKNOWN:
|
||||
break;
|
||||
}
|
||||
if (port < 0 && port >= 65536) {
|
||||
if (port <= 0 || port >= 65536) {
|
||||
throw new IllegalArgumentException(port + " is not in bounds 0 < x < 65536");
|
||||
}
|
||||
this.cmdType = cmdType;
|
||||
|
@ -90,7 +90,7 @@ public final class SocksCmdResponse extends SocksResponse {
|
||||
}
|
||||
host = IDN.toASCII(host);
|
||||
}
|
||||
if (port < 0 && port >= 65535) {
|
||||
if (port <= 0 && port >= 65536) {
|
||||
throw new IllegalArgumentException(port + " is not in bounds 0 < x < 65536");
|
||||
}
|
||||
this.cmdStatus = cmdStatus;
|
||||
|
@ -27,4 +27,5 @@ public class SocksAuthResponseTest {
|
||||
assertTrue(e instanceof NullPointerException);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ public class SocksCmdRequestDecoderTest {
|
||||
@Test
|
||||
public void testCmdRequestDecoderIPv4() {
|
||||
String[] hosts = {"127.0.0.1", };
|
||||
int[] ports = {0, 32769, 65535 };
|
||||
int[] ports = {1, 32769, 65535 };
|
||||
for (SocksCmdType cmdType : SocksCmdType.values()) {
|
||||
for (String host : hosts) {
|
||||
for (int port : ports) {
|
||||
@ -64,7 +64,7 @@ public class SocksCmdRequestDecoderTest {
|
||||
@Test
|
||||
public void testCmdRequestDecoderIPv6() {
|
||||
String[] hosts = {SocksCommonUtils.ipv6toStr(IPAddressUtil.textToNumericFormatV6("::1"))};
|
||||
int[] ports = {0, 32769, 65535};
|
||||
int[] ports = {1, 32769, 65535};
|
||||
for (SocksCmdType cmdType : SocksCmdType.values()) {
|
||||
for (String host : hosts) {
|
||||
for (int port : ports) {
|
||||
@ -88,7 +88,7 @@ public class SocksCmdRequestDecoderTest {
|
||||
"例え.テスト",
|
||||
"실례.테스트",
|
||||
"உதாரணம்.பரிட்சை"};
|
||||
int[] ports = {0, 32769, 65535};
|
||||
int[] ports = {1, 32769, 65535};
|
||||
for (SocksCmdType cmdType : SocksCmdType.values()) {
|
||||
for (String host : hosts) {
|
||||
for (int port : ports) {
|
||||
|
@ -23,19 +23,19 @@ public class SocksCmdRequestTest {
|
||||
@Test
|
||||
public void testConstructorParamsAreNotNull() {
|
||||
try {
|
||||
new SocksCmdRequest(null, SocksAddressType.UNKNOWN, "", 0);
|
||||
new SocksCmdRequest(null, SocksAddressType.UNKNOWN, "", 1);
|
||||
} catch (Exception e) {
|
||||
assertTrue(e instanceof NullPointerException);
|
||||
}
|
||||
|
||||
try {
|
||||
new SocksCmdRequest(SocksCmdType.UNKNOWN, null, "", 0);
|
||||
new SocksCmdRequest(SocksCmdType.UNKNOWN, null, "", 1);
|
||||
} catch (Exception e) {
|
||||
assertTrue(e instanceof NullPointerException);
|
||||
}
|
||||
|
||||
try {
|
||||
new SocksCmdRequest(SocksCmdType.UNKNOWN, SocksAddressType.UNKNOWN, null, 0);
|
||||
new SocksCmdRequest(SocksCmdType.UNKNOWN, SocksAddressType.UNKNOWN, null, 1);
|
||||
} catch (Exception e) {
|
||||
assertTrue(e instanceof NullPointerException);
|
||||
}
|
||||
@ -44,7 +44,7 @@ public class SocksCmdRequestTest {
|
||||
@Test
|
||||
public void testIPv4CorrectAddress() {
|
||||
try {
|
||||
new SocksCmdRequest(SocksCmdType.BIND, SocksAddressType.IPv4, "54.54.1111.253", 0);
|
||||
new SocksCmdRequest(SocksCmdType.BIND, SocksAddressType.IPv4, "54.54.1111.253", 1);
|
||||
} catch (Exception e) {
|
||||
assertTrue(e instanceof IllegalArgumentException);
|
||||
}
|
||||
@ -53,7 +53,7 @@ public class SocksCmdRequestTest {
|
||||
@Test
|
||||
public void testIPv6CorrectAddress() {
|
||||
try {
|
||||
new SocksCmdRequest(SocksCmdType.BIND, SocksAddressType.IPv6, "xxx:xxx:xxx", 0);
|
||||
new SocksCmdRequest(SocksCmdType.BIND, SocksAddressType.IPv6, "xxx:xxx:xxx", 1);
|
||||
} catch (Exception e) {
|
||||
assertTrue(e instanceof IllegalArgumentException);
|
||||
}
|
||||
@ -66,7 +66,7 @@ public class SocksCmdRequestTest {
|
||||
"παράδειγμα.δοκιμήπαράδειγμα.δοκιμήπαράδειγμα.δοκιμήπαράδειγμα.δοκιμή" +
|
||||
"παράδειγμα.δοκιμήπαράδειγμα.δοκιμήπαράδειγμα.δοκιμήπαράδειγμα.δοκιμή" +
|
||||
"παράδειγμα.δοκιμήπαράδειγμα.δοκιμήπαράδειγμα.δοκιμήπαράδειγμα.δοκιμή" +
|
||||
"παράδειγμα.δοκιμήπαράδειγμα.δοκιμήπαράδειγμα.δοκιμήπαράδειγμα.δοκιμή", 0);
|
||||
"παράδειγμα.δοκιμήπαράδειγμα.δοκιμήπαράδειγμα.δοκιμήπαράδειγμα.δοκιμή", 1);
|
||||
} catch (Exception e) {
|
||||
assertTrue(e instanceof IllegalArgumentException);
|
||||
}
|
||||
@ -76,7 +76,7 @@ public class SocksCmdRequestTest {
|
||||
public void testValidPortRange() {
|
||||
try {
|
||||
new SocksCmdRequest(SocksCmdType.BIND, SocksAddressType.DOMAIN,
|
||||
"παράδειγμα.δοκιμήπαράδει", -1);
|
||||
"παράδειγμα.δοκιμήπαράδει", 0);
|
||||
} catch (Exception e) {
|
||||
assertTrue(e instanceof IllegalArgumentException);
|
||||
}
|
||||
|
@ -123,4 +123,18 @@ public class SocksCmdResponseTest {
|
||||
assertArrayEquals("Generated response differs from expected", expected, actualBytes);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidPortRange() {
|
||||
try {
|
||||
new SocksCmdResponse(SocksCmdStatus.SUCCESS, SocksAddressType.IPv4, "127.0.0", 0);
|
||||
} catch (Exception e) {
|
||||
assertTrue(e instanceof IllegalArgumentException);
|
||||
}
|
||||
|
||||
try {
|
||||
new SocksCmdResponse(SocksCmdStatus.SUCCESS, SocksAddressType.IPv4, "127.0.0", 65536);
|
||||
} catch (Exception e) {
|
||||
assertTrue(e instanceof IllegalArgumentException);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user