diff options
| author | Julien Cretel <jub0bsinthecloud@gmail.com> | 2025-11-10 21:20:09 +0000 |
|---|---|---|
| committer | Sean Liao <sean@liao.dev> | 2025-11-12 08:00:45 -0800 |
| commit | c761b26b56eec36390885e5373aab2fd17dc67ef (patch) | |
| tree | c8c9d5fb1ef06c95406124ac61e422f1dfe1a1b0 /src | |
| parent | 65858a146e585b74d41db63f3821d6a150f36d49 (diff) | |
| download | go-c761b26b56eec36390885e5373aab2fd17dc67ef.tar.xz | |
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: c91a75c2c8778a9a8343c6bb4fa89eb1f978059f
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>
Diffstat (limited to 'src')
| -rw-r--r-- | src/mime/grammar.go | 2 | ||||
| -rw-r--r-- | src/mime/mediatype_test.go | 3 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/mime/grammar.go b/src/mime/grammar.go index cc578fbcfd..1efd8a16de 100644 --- a/src/mime/grammar.go +++ b/src/mime/grammar.go @@ -62,7 +62,9 @@ func isTokenChar(c byte) bool { 1<<'^' | 1<<'_' | 1<<'`' | + 1<<'{' | 1<<'|' | + 1<<'}' | 1<<'~' return ((uint64(1)<<c)&(mask&(1<<64-1)) | (uint64(1)<<(c-64))&(mask>>64)) != 0 diff --git a/src/mime/mediatype_test.go b/src/mime/mediatype_test.go index 251df8d669..da8d64de7a 100644 --- a/src/mime/mediatype_test.go +++ b/src/mime/mediatype_test.go @@ -413,6 +413,9 @@ func init() { // 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; 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")}, } } |
