]> Cypherpunks repositories - gostls13.git/commitdiff
mime/multipart: restore 1.9 handling of missing/empty form-data file name
authorIan Lance Taylor <iant@golang.org>
Tue, 26 Jun 2018 22:57:35 +0000 (15:57 -0700)
committerIan Lance Taylor <iant@golang.org>
Tue, 26 Jun 2018 23:56:13 +0000 (23:56 +0000)
Revert the code changes of CL 96975 and CL 70931, but keep the tests,
appropriately modified for the code changes. This restores the 1.9
handling of form-data entries with missing or empty file names.

Changing the handling of this simply confused existing programs for no
useful benefit. Go back to the old behavior.

Updates #19183
Fixes #24041

Change-Id: I4ebc32433911e6360b9fd79d8f63a6d884822e0e
Reviewed-on: https://go-review.googlesource.com/121055
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/mime/multipart/formdata.go
src/mime/multipart/formdata_test.go
src/mime/multipart/multipart.go

index 22e2c8d32340c193751391d9de88fae8011202e8..832d0ad693666605cfdeea6d07c9ebe548ee6ee5 100644 (file)
@@ -58,7 +58,7 @@ func (r *Reader) readForm(maxMemory int64) (_ *Form, err error) {
 
                var b bytes.Buffer
 
-               if !p.hasFileName() {
+               if filename == "" {
                        // value, store as string in memory
                        n, err := io.CopyN(&b, p, maxValueBytes+1)
                        if err != nil && err != io.EOF {
index 5e3c3330f34143c5a94c2245d3fa5ac7a1f72923..2d6a830cb669b791999aa98ef603272aa806bb6c 100644 (file)
@@ -47,12 +47,9 @@ func TestReadFormWithNamelessFile(t *testing.T) {
        }
        defer f.RemoveAll()
 
-       fd := testFile(t, f.File["hiddenfile"][0], "", filebContents)
-       if _, ok := fd.(sectionReadCloser); !ok {
-               t.Errorf("file has unexpected underlying type %T", fd)
+       if g, e := f.Value["hiddenfile"][0], filebContents; g != e {
+               t.Errorf("hiddenfile value = %q, want %q", g, e)
        }
-       fd.Close()
-
 }
 
 func TestReadFormWithTextContentType(t *testing.T) {
index b1b78ecb9adbf72787d99732a69282c3e44e96ec..0993fb7e91d5aa9a0e34e350732ca625715fc3f6 100644 (file)
@@ -81,16 +81,6 @@ func (p *Part) FileName() string {
        return p.dispositionParams["filename"]
 }
 
-// hasFileName determines if a (empty or otherwise)
-// filename parameter was included in the Content-Disposition header
-func (p *Part) hasFileName() bool {
-       if p.dispositionParams == nil {
-               p.parseContentDisposition()
-       }
-       _, ok := p.dispositionParams["filename"]
-       return ok
-}
-
 func (p *Part) parseContentDisposition() {
        v := p.Header.Get("Content-Disposition")
        var err error