From: Andrew Bonventre Date: Tue, 30 Jul 2019 21:03:16 +0000 (-0400) Subject: net/http: return nil from Header.Clone if the receiver is nil X-Git-Tag: go1.13rc1~56 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=8dddf7556ee90e82e02333164644914a2f1af87d;p=gostls13.git net/http: return nil from Header.Clone if the receiver is nil Fixes #33141 Change-Id: I84a8b3496fc9396fd1c09ba9505697c34bdf7105 Reviewed-on: https://go-review.googlesource.com/c/go/+/188022 Run-TryBot: Andrew Bonventre TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Bryan C. Mills --- diff --git a/src/net/http/header.go b/src/net/http/header.go index 1e1ed981ec..230ca03d4f 100644 --- a/src/net/http/header.go +++ b/src/net/http/header.go @@ -78,8 +78,12 @@ func (h Header) write(w io.Writer, trace *httptrace.ClientTrace) error { return h.writeSubset(w, nil, trace) } -// Clone returns a copy of h. +// Clone returns a copy of h or nil if h is nil. func (h Header) Clone() Header { + if h == nil { + return nil + } + // Find total number of values. nv := 0 for _, vv := range h { diff --git a/src/net/http/header_test.go b/src/net/http/header_test.go index 48158d313a..51fcab103b 100644 --- a/src/net/http/header_test.go +++ b/src/net/http/header_test.go @@ -176,6 +176,14 @@ func TestHasToken(t *testing.T) { } } +func TestNilHeaderClone(t *testing.T) { + t1 := Header(nil) + t2 := t1.Clone() + if t2 != nil { + t.Errorf("cloned header does not match original: got: %+v; want: %+v", t2, nil) + } +} + var testHeader = Header{ "Content-Length": {"123"}, "Content-Type": {"text/plain"},