Skip to content

Commit 6fd030c

Browse files
author
Alena Prokharchyk
committed
CLOUDSTACK-5826: do netmask/gateway validation before calculating the POD cidr
1 parent f0ad14e commit 6fd030c

2 files changed

Lines changed: 22 additions & 6 deletions

File tree

server/src/com/cloud/configuration/ConfigurationManagerImpl.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@
3636
import javax.inject.Inject;
3737
import javax.naming.ConfigurationException;
3838

39-
import org.apache.log4j.Logger;
40-
4139
import org.apache.cloudstack.acl.SecurityChecker;
4240
import org.apache.cloudstack.affinity.AffinityGroup;
4341
import org.apache.cloudstack.affinity.AffinityGroupService;
@@ -85,6 +83,7 @@
8583
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
8684
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
8785
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
86+
import org.apache.log4j.Logger;
8887

8988
import com.cloud.alert.AlertManager;
9089
import com.cloud.api.ApiDBUtils;
@@ -1228,6 +1227,16 @@ public void doInTransactionWithoutResult(TransactionStatus status) {
12281227
@Override
12291228
public Pod createPod(long zoneId, String name, String startIp, String endIp, String gateway, String netmask,
12301229
String allocationState) {
1230+
1231+
// Check if the gateway is a valid IP address
1232+
if (!NetUtils.isValidIp(gateway)) {
1233+
throw new InvalidParameterValueException("The gateway is invalid");
1234+
}
1235+
1236+
if (!NetUtils.isValidNetmask(netmask)) {
1237+
throw new InvalidParameterValueException("The netmask is invalid");
1238+
}
1239+
12311240
String cidr = NetUtils.ipAndNetMaskToCidr(gateway, netmask);
12321241
Long userId = CallContext.current().getCallingUserId();
12331242

utils/src/com/cloud/utils/net/NetUtils.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,12 @@
4141
import org.apache.commons.net.util.SubnetUtils;
4242
import org.apache.log4j.Logger;
4343

44-
import com.googlecode.ipv6.IPv6Address;
45-
import com.googlecode.ipv6.IPv6AddressRange;
46-
import com.googlecode.ipv6.IPv6Network;
47-
4844
import com.cloud.utils.IteratorUtil;
4945
import com.cloud.utils.Pair;
5046
import com.cloud.utils.script.Script;
47+
import com.googlecode.ipv6.IPv6Address;
48+
import com.googlecode.ipv6.IPv6AddressRange;
49+
import com.googlecode.ipv6.IPv6Network;
5150

5251
public class NetUtils {
5352
protected final static Logger s_logger = Logger.getLogger(NetUtils.class);
@@ -770,6 +769,14 @@ public static String getCidrSubNet(String ip, long cidrSize) {
770769
}
771770

772771
public static String ipAndNetMaskToCidr(String ip, String netmask) {
772+
773+
if (!isValidIp(ip)) {
774+
return null;
775+
}
776+
777+
if (!isValidNetmask(netmask)) {
778+
return null;
779+
}
773780
long ipAddr = ip2Long(ip);
774781
long subnet = ip2Long(netmask);
775782
long result = ipAddr & subnet;

0 commit comments

Comments
 (0)