Skip to content

mime: Parse/Format corrupt parameters (2) #11291

Closed
@dvyukov

Description

@dvyukov

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions