golang/go

mime: Parse/Format corrupt parameters (2)

dvyukov opened this issue · 1 comments

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

CL https://golang.org/cl/17136 mentions this issue.