diff --git a/svg/svg.go b/svg/svg.go index 6bead71f..cfc70261 100644 --- a/svg/svg.go +++ b/svg/svg.go @@ -27,6 +27,19 @@ var feDropShadowTemplate = strings.TrimSpace(` `) +func cloneHeaders(src map[string]string) map[string]string { + if src == nil { + return nil + } + + dst := make(map[string]string, len(src)) + for k, v := range src { + dst[k] = v + } + + return dst +} + func Sanitize(data *imagedata.ImageData) (*imagedata.ImageData, error) { r := bytes.NewReader(data.Data) l := xml.NewLexer(parse.NewInput(r)) @@ -64,7 +77,7 @@ func Sanitize(data *imagedata.ImageData) (*imagedata.ImageData, error) { newData := imagedata.ImageData{ Data: buf.Bytes(), Type: data.Type, - Headers: data.Headers, + Headers: cloneHeaders(data.Headers), } newData.SetCancel(cancel) @@ -196,7 +209,7 @@ func FixUnsupported(data *imagedata.ImageData) (*imagedata.ImageData, bool, erro newData := imagedata.ImageData{ Data: buf.Bytes(), Type: data.Type, - Headers: data.Headers, + Headers: cloneHeaders(data.Headers), } newData.SetCancel(cancel)