aboutsummaryrefslogtreecommitdiff
path: root/src/mime
diff options
context:
space:
mode:
authorHiroshi Ioka <hirochachacha@gmail.com>2017-03-08 08:11:33 +0900
committerBrad Fitzpatrick <bradfitz@golang.org>2017-04-09 19:03:00 +0000
commit5de5dd8d25d17fa8893ee7244c1cb02e87d5ccfd (patch)
tree62702a4f6b8a78958eeeb07d382e6cb0fe8b1938 /src/mime
parent0020b8a2572a953b8521ce75367779255c5a1436 (diff)
downloadgo-5de5dd8d25d17fa8893ee7244c1cb02e87d5ccfd.tar.gz
go-5de5dd8d25d17fa8893ee7244c1cb02e87d5ccfd.zip
mime: fix panic parsing 'encoded-word'
https://go-review.googlesource.com/37812 says fix panic parsing. Actually, it doesn't. so fix it. Fixes #19416 Change-Id: Ie0c4241f10e5ebcbac20e184c2a7b13b22632eab Reviewed-on: https://go-review.googlesource.com/37912 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/mime')
-rw-r--r--src/mime/encodedword.go6
-rw-r--r--src/mime/encodedword_test.go1
2 files changed, 4 insertions, 3 deletions
diff --git a/src/mime/encodedword.go b/src/mime/encodedword.go
index dffcdef053..158feaad4f 100644
--- a/src/mime/encodedword.go
+++ b/src/mime/encodedword.go
@@ -208,15 +208,15 @@ func (d *WordDecoder) Decode(word string) (string, error) {
if len(charset) == 0 {
return "", errInvalidWord
}
+ if len(word) <= split+3 {
+ return "", errInvalidWord
+ }
encoding := word[split+1]
// the field after split must only be one byte
if word[split+2] != '?' {
return "", errInvalidWord
}
text := word[split+3:]
- if len(text) == 0 {
- return "", errInvalidWord
- }
content, err := decode(encoding, text)
if err != nil {
diff --git a/src/mime/encodedword_test.go b/src/mime/encodedword_test.go
index ff79796042..b63fe043ed 100644
--- a/src/mime/encodedword_test.go
+++ b/src/mime/encodedword_test.go
@@ -90,6 +90,7 @@ func TestDecodeWord(t *testing.T) {
{"=?UTF-8?A?A?=", "", true},
{"=????=", "", true},
{"=?UTF-8?Q??=", "", true},
+ {"=?UTF-8???=", "", true},
}
for _, test := range tests {