From: Hiroshi Ioka Date: Tue, 7 Mar 2017 23:11:33 +0000 (+0900) Subject: mime: fix panic parsing 'encoded-word' X-Git-Tag: go1.9beta1~772 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5de5dd8d25d17fa8893ee7244c1cb02e87d5ccfd;p=gostls13.git 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 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- 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 {