]> Cypherpunks repositories - gostls13.git/commitdiff
net: do not panic on nil IPNet.String()
authorJason A. Donenfeld <Jason@zx2c4.com>
Tue, 4 Jan 2022 23:16:40 +0000 (00:16 +0100)
committerJason Donenfeld <Jason@zx2c4.com>
Wed, 5 Jan 2022 01:53:39 +0000 (01:53 +0000)
The code looks like it was already trying to avoid this but missed a
spot.

Fixes #50271.

Change-Id: I450adac3f618b9535b61a28e6a160eacc351d47c
Reviewed-on: https://go-review.googlesource.com/c/go/+/373075
Trust: Jason Donenfeld <Jason@zx2c4.com>
Run-TryBot: Jason Donenfeld <Jason@zx2c4.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/net/ip.go
src/net/ip_test.go

index b016bef144a5d7e3b4e7c0369b617fd88161f93d..54c52881cf4d4fe94eb0ba7395f241e3fd302dec 100644 (file)
@@ -545,6 +545,9 @@ func (n *IPNet) Network() string { return "ip+net" }
 // character and a mask expressed as hexadecimal form with no
 // punctuation like "198.51.100.0/c000ff00".
 func (n *IPNet) String() string {
+       if n == nil {
+               return "<nil>"
+       }
        nn, m := networkNumberAndMask(n)
        if nn == nil || m == nil {
                return "<nil>"
index 777461ad27245e48c9729d0335f7404450a9c992..8f1590cfd5cd1952fe75bfa986c2508fcb9812c3 100644 (file)
@@ -407,6 +407,7 @@ var ipNetStringTests = []struct {
        {&IPNet{IP: IPv4(192, 168, 1, 0), Mask: IPv4Mask(255, 0, 255, 0)}, "192.168.1.0/ff00ff00"},
        {&IPNet{IP: ParseIP("2001:db8::"), Mask: CIDRMask(55, 128)}, "2001:db8::/55"},
        {&IPNet{IP: ParseIP("2001:db8::"), Mask: IPMask(ParseIP("8000:f123:0:cafe::"))}, "2001:db8::/8000f1230000cafe0000000000000000"},
+       {nil, "<nil>"},
 }
 
 func TestIPNetString(t *testing.T) {