From ccc9109197050f5ba2fe4c184fe4db37bbebfaf9 Mon Sep 17 00:00:00 2001 From: Jice Gao Date: Thu, 28 Oct 2021 09:46:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3cidr=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/hutool/core/net/NetUtil.java | 2 +- .../src/test/java/cn/hutool/core/net/NetUtilTest.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java index ecebe74b6..65e521342 100644 --- a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java @@ -702,7 +702,7 @@ public class NetUtil { String[] ips = StrUtil.splitToArray(ip, '.'); int ipAddr = (Integer.parseInt(ips[0]) << 24) | (Integer.parseInt(ips[1]) << 16) | (Integer.parseInt(ips[2]) << 8) | Integer.parseInt(ips[3]); int type = Integer.parseInt(cidr.replaceAll(".*/", "")); - int mask = 0xFFFFFFFF << (32 - type); + int mask = (int)((-1L << 32 - type) & 0XFFFFFFFF); String cidrIp = cidr.replaceAll("/.*", ""); String[] cidrIps = cidrIp.split("\\."); int cidrIpAddr = (Integer.parseInt(cidrIps[0]) << 24) | (Integer.parseInt(cidrIps[1]) << 16) | (Integer.parseInt(cidrIps[2]) << 8) | Integer.parseInt(cidrIps[3]); diff --git a/hutool-core/src/test/java/cn/hutool/core/net/NetUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/net/NetUtilTest.java index ff467456a..0bed82723 100644 --- a/hutool-core/src/test/java/cn/hutool/core/net/NetUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/net/NetUtilTest.java @@ -101,4 +101,15 @@ public class NetUtilTest { Console.log(txt); } + @Test + public void isInRangeTest(){ + Assert.assertTrue(NetUtil.isInRange("114.114.114.114","0.0.0.0/0")); + Assert.assertTrue(NetUtil.isInRange("192.168.3.4","192.0.0.0/8")); + Assert.assertTrue(NetUtil.isInRange("192.168.3.4","192.168.0.0/16")); + Assert.assertTrue(NetUtil.isInRange("192.168.3.4","192.168.3.0/24")); + Assert.assertTrue(NetUtil.isInRange("192.168.3.4","192.168.3.4/32")); + Assert.assertFalse(NetUtil.isInRange("8.8.8.8","192.0.0.0/8")); + Assert.assertFalse(NetUtil.isInRange("114.114.114.114","192.168.3.4/32")); + } + }