mime: parse media types that contain braces

This CL fixes a bug introduced by CL 666655: isTokenChar would no longer
(but should) report true for '{' and '}'.

Fixes #76236

Change-Id: Ifc0953c30d7cae7bfba9bc4b6bb6951a83c52576
GitHub-Last-Rev: c91a75c2c8
GitHub-Pull-Request: golang/go#76243
Reviewed-on: https://go-review.googlesource.com/c/go/+/719380
Reviewed-by: Sean Liao <sean@liao.dev>
Reviewed-by: Jorropo <jorropo.pgm@gmail.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Julien Cretel 2025-11-10 21:20:09 +00:00 committed by Sean Liao
parent 65858a146e
commit c761b26b56
2 changed files with 5 additions and 0 deletions

View file

@ -62,7 +62,9 @@ func isTokenChar(c byte) bool {
1<<'^' | 1<<'^' |
1<<'_' | 1<<'_' |
1<<'`' | 1<<'`' |
1<<'{' |
1<<'|' | 1<<'|' |
1<<'}' |
1<<'~' 1<<'~'
return ((uint64(1)<<c)&(mask&(1<<64-1)) | return ((uint64(1)<<c)&(mask&(1<<64-1)) |
(uint64(1)<<(c-64))&(mask>>64)) != 0 (uint64(1)<<(c-64))&(mask>>64)) != 0

View file

@ -413,6 +413,9 @@ func init() {
// Issue #48866: duplicate parameters containing equal values should be allowed // Issue #48866: duplicate parameters containing equal values should be allowed
{`text; charset=utf-8; charset=utf-8; format=fixed`, "text", m("charset", "utf-8", "format", "fixed")}, {`text; charset=utf-8; charset=utf-8; format=fixed`, "text", m("charset", "utf-8", "format", "fixed")},
{`text; charset=utf-8; format=flowed; charset=utf-8`, "text", m("charset", "utf-8", "format", "flowed")}, {`text; charset=utf-8; format=flowed; charset=utf-8`, "text", m("charset", "utf-8", "format", "flowed")},
// Issue #76236: '{' and '}' are token chars.
{"attachment; filename={file}.png", "attachment", m("filename", "{file}.png")},
} }
} }