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