From 4fbccda1841d542f9cf195a15d8fff1e314793f9 Mon Sep 17 00:00:00 2001 From: Rob Adams Date: Wed, 31 Jan 2018 15:05:02 -0800 Subject: [PATCH] Add IP version check --- net/ip.go | 3 +++ net/ip_test.go | 2 ++ 2 files changed, 5 insertions(+) diff --git a/net/ip.go b/net/ip.go index d310f17..1ce30e8 100644 --- a/net/ip.go +++ b/net/ip.go @@ -210,6 +210,9 @@ func (n Network) Contains(nn NetworkNumber) bool { // Contains returns true if Network covers o, false otherwise func (n Network) Covers(o Network) bool { + if len(n.Number) != len(o.Number) { + return false + } nMaskSize, _ := n.IPNet.Mask.Size() oMaskSize, _ := o.IPNet.Mask.Size() return n.Contains(o.Number) && nMaskSize <= oMaskSize diff --git a/net/ip_test.go b/net/ip_test.go index 6a9d2b1..78a7774 100644 --- a/net/ip_test.go +++ b/net/ip_test.go @@ -424,6 +424,8 @@ func TestNetworkCovers(t *testing.T) { {"10.0.0.0/16", "10.0.0.0/15", false, "prefix false"}, {"10.0.0.0/15", "10.0.0.0/16", true, "prefix true"}, {"10.0.0.0/15", "10.0.0.0/15", true, "same"}, + {"10::0/15", "10.0.0.0/15", false, "ip version mismatch"}, + {"10::0/15", "10::0/16", true, "ipv6"}, } for _, tc := range cases { -- GitLab