mirror of
https://github.com/apache/rocketmq.git
synced 2026-08-31 02:20:15 +08:00
[ISSUE#2172] Fix the issue of ArrayIndexOutOfBoundsException
Co-authored-by: fantow <hahaha>
This commit is contained in:
@@ -55,11 +55,15 @@ public class RemoteAddressStrategyFactory {
|
||||
return new MultipleRemoteAddressStrategy(AclUtils.getAddresses(remoteAddr, last));
|
||||
} else {
|
||||
String[] strArray = StringUtils.split(remoteAddr, ".");
|
||||
String four = strArray[3];
|
||||
if (!four.startsWith("{")) {
|
||||
// However a right IP String provided by user,it always can be divided into 4 parts by '.'.
|
||||
if (strArray.length < 4) {
|
||||
throw new AclException(String.format("MultipleRemoteAddressStrategy has got a/some wrong format IP(s) ", remoteAddr));
|
||||
}
|
||||
String lastStr = strArray[strArray.length - 1];
|
||||
if (!lastStr.startsWith("{")) {
|
||||
throw new AclException(String.format("MultipleRemoteAddressStrategy netaddress examine scope Exception netaddress", remoteAddr));
|
||||
}
|
||||
return new MultipleRemoteAddressStrategy(AclUtils.getAddresses(remoteAddr, four));
|
||||
return new MultipleRemoteAddressStrategy(AclUtils.getAddresses(remoteAddr, lastStr));
|
||||
}
|
||||
} else if (AclUtils.isComma(remoteAddr)) {
|
||||
return new MultipleRemoteAddressStrategy(StringUtils.split(remoteAddr, ","));
|
||||
|
||||
@@ -198,6 +198,16 @@ public class RemoteAddressStrategyTest {
|
||||
remoteAddressStrategyFactory.getRemoteAddressStrategy(plainAccessResource);
|
||||
plainAccessResource.setWhiteRemoteAddress("::1,2,3}");
|
||||
remoteAddressStrategyFactory.getRemoteAddressStrategy(plainAccessResource);
|
||||
plainAccessResource.setWhiteRemoteAddress("192.168.1.{1}");
|
||||
remoteAddressStrategyFactory.getRemoteAddressStrategy(plainAccessResource);
|
||||
plainAccessResource.setWhiteRemoteAddress("192.168.1.{1,2}");
|
||||
remoteAddressStrategyFactory.getRemoteAddressStrategy(plainAccessResource);
|
||||
plainAccessResource.setWhiteRemoteAddress("192.168.{1}");
|
||||
remoteAddressStrategyFactory.getRemoteAddressStrategy(plainAccessResource);
|
||||
plainAccessResource.setWhiteRemoteAddress("{192.168.1}");
|
||||
remoteAddressStrategyFactory.getRemoteAddressStrategy(plainAccessResource);
|
||||
plainAccessResource.setWhiteRemoteAddress("{192.168.1.1}");
|
||||
remoteAddressStrategyFactory.getRemoteAddressStrategy(plainAccessResource);
|
||||
}
|
||||
|
||||
private void multipleNetaddressStrategyTest(RemoteAddressStrategy remoteAddressStrategy) {
|
||||
|
||||
Reference in New Issue
Block a user