1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-29 18:45:23 +00:00

fix cidr parsing for non-normalized ips

This commit is contained in:
Darien Raymond 2017-11-05 10:37:23 +01:00
parent 01cfcbeb30
commit 541924dc88
2 changed files with 3 additions and 0 deletions

View File

@ -44,6 +44,7 @@ func (n *IPNetTable) Add(ipNet *net.IPNet) {
func (n *IPNetTable) AddIP(ip []byte, mask byte) {
k := ipToUint32(ip)
k = (k >> (32 - mask)) << (32 - mask) // normalize ip
existing, found := n.cache[k]
if !found || existing > mask {
n.cache[k] = mask

View File

@ -32,6 +32,7 @@ func TestIPNet(t *testing.T) {
ipNet.Add(parseCIDR(("198.51.100.0/24")))
ipNet.Add(parseCIDR(("203.0.113.0/24")))
ipNet.Add(parseCIDR(("8.8.8.8/32")))
ipNet.AddIP(net.ParseIP("91.108.4.0"), 16)
assert(ipNet.Contains(ParseIP("192.168.1.1")), IsTrue)
assert(ipNet.Contains(ParseIP("192.0.0.0")), IsTrue)
assert(ipNet.Contains(ParseIP("192.0.1.0")), IsFalse)
@ -40,4 +41,5 @@ func TestIPNet(t *testing.T) {
assert(ipNet.Contains(ParseIP("8.8.8.7")), IsFalse)
assert(ipNet.Contains(ParseIP("8.8.8.8")), IsTrue)
assert(ipNet.Contains(ParseIP("2001:cdba::3257:9652")), IsFalse)
assert(ipNet.Contains(ParseIP("91.108.255.254")), IsTrue)
}