From: Michael Fraenkel Date: Wed, 5 Oct 2016 15:27:34 +0000 (-0400) Subject: [release-branch.go1.6] net/http: multipart ReadForm close file after copy X-Git-Tag: go1.6.4~3 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f0fa13b346c1be50aae0eb4349a7c09bdc5826fc;p=gostls13.git [release-branch.go1.6] net/http: multipart ReadForm close file after copy Always close the file regardless of whether the copy succeeds or fails. Pass along the close error if the copy succeeds Updates #16296 Change-Id: Ib394655b91d25750f029f17b3846d985f673fb50 Reviewed-on: https://go-review.googlesource.com/30410 Reviewed-by: Brad Fitzpatrick Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-on: https://go-review.googlesource.com/33640 Reviewed-by: Chris Broadfoot --- diff --git a/src/mime/multipart/formdata.go b/src/mime/multipart/formdata.go index eee53fc8dd..806b46049e 100644 --- a/src/mime/multipart/formdata.go +++ b/src/mime/multipart/formdata.go @@ -75,8 +75,10 @@ func (r *Reader) ReadForm(maxMemory int64) (f *Form, err error) { if err != nil { return nil, err } - defer file.Close() _, err = io.Copy(file, io.MultiReader(&b, p)) + if cerr := file.Close(); err == nil { + err = cerr + } if err != nil { os.Remove(file.Name()) return nil, err