Skip to content

Commit

Permalink
netutil: fix leading zeros
Browse files Browse the repository at this point in the history
  • Loading branch information
EugeneOne1 committed Feb 11, 2022
1 parent 52db891 commit 917a851
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 49 deletions.
2 changes: 1 addition & 1 deletion netutil/netutil_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ var (
testIPv6ZeroTail = net.IP{
0x12, 0x34, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
}
)
8 changes: 0 additions & 8 deletions netutil/reversed.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,10 +233,6 @@ func ipv4NetFromReversed(arpa string) (subnet *net.IPNet, err error) {
}
}

if octet64 == 0 {
return nil, ErrNotAReversedSubnet
}

return &net.IPNet{
IP: ip,
Mask: net.CIDRMask(l*8, IPv4BitLen),
Expand Down Expand Up @@ -280,10 +276,6 @@ func ipv6NetFromReversed(arpa string) (subnet *net.IPNet, err error) {
l++
}

if b == 0 {
return nil, ErrNotAReversedSubnet
}

return &net.IPNet{
IP: ip,
Mask: net.CIDRMask(l*4, IPv6BitLen),
Expand Down
36 changes: 14 additions & 22 deletions netutil/reversed_example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,8 @@ func ExampleIPFromReversedAddr() {

fmt.Println(ip)

// Output:
//
// 1.2.3.4
}

func ExampleIPFromReversedAddr_ipv6() {
a := `4.3.2.1.d.c.b.a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa`
ip, err := netutil.IPFromReversedAddr(a)
ip, err = netutil.IPFromReversedAddr(a)
if err != nil {
panic(err)
}
Expand All @@ -31,6 +25,7 @@ func ExampleIPFromReversedAddr_ipv6() {

// Output:
//
// 1.2.3.4
// ::abcd:1234
}

Expand All @@ -42,14 +37,8 @@ func ExampleIPToReversedAddr() {

fmt.Println(arpa)

// Output:
//
// 4.3.2.1.in-addr.arpa
}

func ExampleIPToReversedAddr_ipv6() {
ip := net.ParseIP("::abcd:1234")
arpa, err := netutil.IPToReversedAddr(ip)
arpa, err = netutil.IPToReversedAddr(ip)
if err != nil {
panic(err)
}
Expand All @@ -58,6 +47,7 @@ func ExampleIPToReversedAddr_ipv6() {

// Output:
//
// 4.3.2.1.in-addr.arpa
// 4.3.2.1.d.c.b.a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa
}

Expand All @@ -69,14 +59,14 @@ func ExampleSubnetFromReversedAddr() {

fmt.Println(subnet)

// Output:
//
// 10.0.0.0/8
}
subnet, err = netutil.SubnetFromReversedAddr("0.10.in-addr.arpa")
if err != nil {
panic(err)
}

func ExampleSubnetFromReversedAddr_ipv6() {
a := `3.2.1.d.c.b.a.ip6.arpa`
subnet, err := netutil.SubnetFromReversedAddr(a)
fmt.Println(subnet)

subnet, err = netutil.SubnetFromReversedAddr("3.2.1.d.c.b.a.ip6.arpa")
if err != nil {
panic(err)
}
Expand All @@ -85,10 +75,12 @@ func ExampleSubnetFromReversedAddr_ipv6() {

// Output:
//
// 10.0.0.0/8
// 10.0.0.0/16
// abcd:1230::/28
}

func ExampleSubnetFromReversedAddr_domain() {
func ExampleSubnetFromReversedAddr_domain_only() {
a := `in-addr.arpa`
_, err := netutil.SubnetFromReversedAddr(a)

Expand Down
34 changes: 16 additions & 18 deletions netutil/reversed_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,12 @@ func TestSubnetFromReversedAddr(t *testing.T) {
wantErrMsg: "",
in: `0.0.0.` + ipv4NetRevGood,
name: "good_ipv4_single_addr_leading_zero",
}, {
want: newIPNet(testIPv4ZeroTail, 8*2),
wantErrAs: nil,
wantErrMsg: "",
in: "0." + ipv4NetRevGood,
name: "good_ipv4_subnet_leading_zero",
}, {
want: newIPNet(testIPv4ZeroTail, 8),
wantErrAs: nil,
Expand All @@ -318,27 +324,20 @@ func TestSubnetFromReversedAddr(t *testing.T) {
`bad ipv4 address "1.0.z.127"`,
in: ipv4Char,
name: "bad_ipv4_char",
}, {
want: nil,
wantErrAs: new(errors.Error),
wantErrMsg: `bad arpa domain name "0.` + ipv4NetRevGood + `": ` +
`not a reversed ip network`,
in: "0." + ipv4NetRevGood,
name: "bad_ipv4_leading_zero",
}, {
want: nil,
wantErrAs: new(*strconv.NumError),
wantErrMsg: `bad arpa domain name "x.` + ipv4NetRevGood + `": ` +
`strconv.ParseUint: parsing "x": invalid syntax`,
in: `x.` + ipv4NetRevGood,
name: "bad_ipv4_bad_char",
name: "bad_ipv4_subnet_char",
}, {
want: nil,
wantErrAs: new(*netutil.AddrError),
wantErrMsg: `bad arpa domain name "05.` + ipv4NetRevGood + `": ` +
`bad domain name label "05": leading zero is forbidden at this position`,
in: `05.` + ipv4NetRevGood,
name: "bad_ipv4_unexpected_zero",
name: "bad_ipv4_subnet_unexpected_zero",
}, {
want: nil,
wantErrAs: new(*netutil.AddrError),
Expand All @@ -364,12 +363,18 @@ func TestSubnetFromReversedAddr(t *testing.T) {
wantErrMsg: "",
in: ipv6RevGoodUp,
name: "good_ipv6_single_addr_case",
}, {
want: newIPNet(testIPv6ZeroTail, netutil.IPv6BitLen),
wantErrAs: nil,
wantErrMsg: "",
in: ipv6RevZeroes + "." + ipv6RevGoodSuffix,
name: "good_ipv6_single_addr_leading_zeroes",
}, {
want: newIPNet(testIPv6ZeroTail, 4*17),
wantErrAs: nil,
wantErrMsg: "",
in: ipv6NetRevGood,
name: "good_ipv6_subnet",
in: "0." + ipv6RevGoodSuffix,
name: "good_ipv6_subnet_leading_zeroes",
}, {
want: nil,
wantErrAs: new(*netutil.AddrError),
Expand Down Expand Up @@ -440,13 +445,6 @@ func TestSubnetFromReversedAddr(t *testing.T) {
`not a reversed ip network`,
in: ipv6NetRevHex,
name: "bad_ipv6_hex",
}, {
want: nil,
wantErrAs: new(*netutil.AddrError),
wantErrMsg: `bad arpa domain name "` + ipv6RevGoodSuffix + `": ` +
`not a reversed ip network`,
in: ipv6RevGoodSuffix,
name: "bad_ipv6_leading_zeroes",
}, {
want: nil,
wantErrAs: new(errors.Error),
Expand Down

0 comments on commit 917a851

Please sign in to comment.