components/golang-17/patches/0034-release-branch.go1.7-net-http-multipart-ReadForm-clo.patch
changeset 7518 c388d4e1d3ad
equal deleted inserted replaced
7517:42ae3923b8fe 7518:c388d4e1d3ad
       
     1 From fab76f07f54527cd5b0c7243bea96d9d3608582d Mon Sep 17 00:00:00 2001
       
     2 From: Michael Fraenkel <[email protected]>
       
     3 Date: Wed, 5 Oct 2016 11:27:34 -0400
       
     4 Subject: [PATCH 34/38] [release-branch.go1.7] net/http: multipart ReadForm
       
     5  close file after copy
       
     6 
       
     7 Always close the file regardless of whether the copy succeeds or fails.
       
     8 Pass along the close error if the copy succeeds
       
     9 
       
    10 Updates #16296
       
    11 Fixes #17965
       
    12 
       
    13 Change-Id: Ib394655b91d25750f029f17b3846d985f673fb50
       
    14 Reviewed-on: https://go-review.googlesource.com/30410
       
    15 Reviewed-by: Brad Fitzpatrick <[email protected]>
       
    16 Run-TryBot: Brad Fitzpatrick <[email protected]>
       
    17 TryBot-Result: Gobot Gobot <[email protected]>
       
    18 Reviewed-on: https://go-review.googlesource.com/33639
       
    19 Reviewed-by: Chris Broadfoot <[email protected]>
       
    20 Reviewed-by: Ian Lance Taylor <[email protected]>
       
    21 ---
       
    22  src/mime/multipart/formdata.go | 4 +++-
       
    23  1 file changed, 3 insertions(+), 1 deletion(-)
       
    24 
       
    25 diff --git a/src/mime/multipart/formdata.go b/src/mime/multipart/formdata.go
       
    26 index 8085bd3..c9e3188 100644
       
    27 --- a/src/mime/multipart/formdata.go
       
    28 +++ b/src/mime/multipart/formdata.go
       
    29 @@ -79,8 +79,10 @@ func (r *Reader) readForm(maxMemory int64) (_ *Form, err error) {
       
    30  			if err != nil {
       
    31  				return nil, err
       
    32  			}
       
    33 -			defer file.Close()
       
    34  			_, err = io.Copy(file, io.MultiReader(&b, p))
       
    35 +			if cerr := file.Close(); err == nil {
       
    36 +				err = cerr
       
    37 +			}
       
    38  			if err != nil {
       
    39  				os.Remove(file.Name())
       
    40  				return nil, err
       
    41 -- 
       
    42 2.7.4
       
    43