mime: Parse/Format corrupt parameters (2) (original) (raw)
The following program fails with the panic:
package main
import ( "fmt" "mime" "reflect" )
func main() { sdata := "0/0;0="'";9="'"" mt, params, err := mime.ParseMediaType(sdata) if err != nil { return } sdata1 := mime.FormatMediaType(mt, params) mt1, params1, err := mime.ParseMediaType(sdata1) if err != nil { fmt.Printf("%q(%q, %+v) -> %q\n", sdata, mt, params, sdata1) panic(err) } if !reflect.DeepEqual(mt, mt1) { fmt.Printf("%q -> %q\n", mt, mt1) panic("mediatype changed") } if !reflect.DeepEqual(params, params1) { fmt.Printf("%+v -> %+v\n", params, params1) panic("params changed") } }
map[0:' 9:'] -> map[0:; 9=]
panic: params changed
Either Format/Parse must preserve parameters, or if that's incorrect input the first Parse must fail.
go version devel +514014c Thu Jun 18 15:54:35 2015 +0200 linux/amd64