]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1] mime: make ParseMediaType return zero results on error
authorRuss Cox <rsc@golang.org>
Wed, 25 Apr 2012 19:44:30 +0000 (15:44 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 25 Apr 2012 19:44:30 +0000 (15:44 -0400)
««« CL 6119051 / 1384d7510575
mime: make ParseMediaType return zero results on error

Fixes #3562

R=golang-dev, adg, rsc
CC=golang-dev
https://golang.org/cl/6119051
»»»

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/6127045

src/pkg/mime/mediatype.go
src/pkg/mime/mediatype_test.go

index 9398dece1d9107d3bc69f6688d3c39a2ae55f62f..8396c0a155b4cb33ba0009c158353936ea75b770 100644 (file)
@@ -99,7 +99,7 @@ func ParseMediaType(v string) (mediatype string, params map[string]string, err e
 
        err = checkMediaTypeDisposition(mediatype)
        if err != nil {
-               return
+               return "", nil, err
        }
 
        params = make(map[string]string)
index 64ab29134157217699ffd1a2a217045e04c1803c..e41ead237a5b508ebb77db51812a42982046c5e5 100644 (file)
@@ -244,13 +244,33 @@ func TestParseMediaType(t *testing.T) {
        }
 }
 
+type badMediaTypeTest struct {
+       in  string
+       err string
+}
+
+var badMediaTypeTests = []badMediaTypeTest{
+       {"bogus ;=========", "mime: invalid media parameter"},
+       {"bogus/<script>alert</script>", "mime: expected token after slash"},
+       {"bogus/bogus<script>alert</script>", "mime: unexpected content after media subtype"},
+}
+
 func TestParseMediaTypeBogus(t *testing.T) {
-       mt, params, err := ParseMediaType("bogus ;=========")
-       if err == nil {
-               t.Fatalf("expected an error parsing invalid media type; got type %q, params %#v", mt, params)
-       }
-       if err.Error() != "mime: invalid media parameter" {
-               t.Errorf("expected invalid media parameter; got error %q", err)
+       for _, tt := range badMediaTypeTests {
+               mt, params, err := ParseMediaType(tt.in)
+               if err == nil {
+                       t.Errorf("ParseMediaType(%q) = nil error; want parse error", tt.in)
+                       continue
+               }
+               if err.Error() != tt.err {
+                       t.Errorf("ParseMediaType(%q) = err %q; want %q", tt.in, err.Error(), tt.err)
+               }
+               if params != nil {
+                       t.Errorf("ParseMediaType(%q): got non-nil params on error", tt.in)
+               }
+               if mt != "" {
+                       t.Errorf("ParseMediaType(%q): got non-empty media type string on error", tt.in)
+               }
        }
 }