Skip to content

Commit 637afb9

Browse files
committed
CID-1116485: cast cidr during bit shifting
and simple test included
1 parent b5625c0 commit 637afb9

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -775,7 +775,7 @@ public static String getSubNet(final String ip, final String netmask) {
775775
}
776776

777777
public static String getCidrSubNet(final String ip, final long cidrSize) {
778-
final long numericNetmask = 0xffffffff >> MAX_CIDR - cidrSize << MAX_CIDR - cidrSize;
778+
final long numericNetmask = ((long)0xffffffff) >> MAX_CIDR - cidrSize << MAX_CIDR - cidrSize;
779779
final String netmask = NetUtils.long2Ip(numericNetmask);
780780
return getSubNet(ip, netmask);
781781
}

utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,4 +418,10 @@ public void testIs31PrefixCidr() {
418418

419419
assertTrue("It should pass! 31 bit prefix.", is31PrefixCidr);
420420
}
421+
@Test
422+
public void testGetCidrSubNet() {
423+
final String cidr = "10.10.0.0/16";
424+
String subnet = NetUtils.getCidrSubNet("10.10.10.10", 16);
425+
assertTrue(NetUtils.isIpWithtInCidrRange(subnet, cidr));
426+
}
421427
}

0 commit comments

Comments
 (0)