Skip to content

Commit f708b63

Browse files
committed
fix: ipv6 address parsing
1 parent 245e95d commit f708b63

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

src/net/ip.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,7 @@ func parseIPv6(s string) (ip IP) {
618618
for i < IPv6len {
619619
// Hex number.
620620
n, c, ok := xtoi(s)
621-
if !ok || n > 0xFFFF {
621+
if !ok || n > 0xFFFF || c > 4 {
622622
return nil
623623
}
624624

src/net/ip_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ var parseIPTests = []struct {
2323
{"::ffff:127.1.2.3", IPv4(127, 1, 2, 3)},
2424
{"::ffff:7f01:0203", IPv4(127, 1, 2, 3)},
2525
{"0:0:0:0:0000:ffff:127.1.2.3", IPv4(127, 1, 2, 3)},
26-
{"0:0:0:0:000000:ffff:127.1.2.3", IPv4(127, 1, 2, 3)},
2726
{"0:0:0:0::ffff:127.1.2.3", IPv4(127, 1, 2, 3)},
2827

2928
{"2001:4860:0:2001::68", IP{0x20, 0x01, 0x48, 0x60, 0, 0, 0x20, 0x01, 0, 0, 0, 0, 0, 0, 0x00, 0x68}},
@@ -39,6 +38,8 @@ var parseIPTests = []struct {
3938
{"fe80::1%lo0", nil},
4039
{"fe80::1%911", nil},
4140
{"", nil},
41+
//6 zeroes in one group
42+
{"0:0:0:0:000000:ffff:127.1.2.3", nil},
4243
{"a1:a2:a3:a4::b1:b2:b3:b4", nil}, // Issue 6628
4344
{"127.001.002.003", nil},
4445
{"::ffff:127.001.002.003", nil},

0 commit comments

Comments
 (0)