From bfd8333c3e047571006bfa00180ccd6365279ae9 Mon Sep 17 00:00:00 2001 From: changyic Date: Mon, 2 Dec 2019 01:28:08 +0000 Subject: [PATCH] Fix writeBody may get panic because of nil w.partWriter - If (*messageWriter).createPart fails, w.err will be set and w.partWriter will be nil. - (*messageWriter).writeBody do not check the w.err and the w.partWriter. It may try to use the nil w.partWriter, causing "panic: runtime error: invalid memory address or nil pointer dereference". - Adding the check of w.err, just like (*messageWriter).Write, do nothing in (*messageWriter).writeBody if w.err is not nil. --- writeto.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/writeto.go b/writeto.go index faf6124..2577fe4 100644 --- a/writeto.go +++ b/writeto.go @@ -258,6 +258,10 @@ func (w *messageWriter) writeHeaders(h map[string][]string) { } func (w *messageWriter) writeBody(f func(io.Writer) error, enc Encoding) { + if w.err != nil { + return + } + var subWriter io.Writer if w.depth == 0 { w.writeString("\r\n")