From 5de5dd8d25d17fa8893ee7244c1cb02e87d5ccfd Mon Sep 17 00:00:00 2001 From: Hiroshi Ioka Date: Wed, 8 Mar 2017 08:11:33 +0900 Subject: [PATCH] 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 --- src/mime/encodedword.go | 6 +++--- src/mime/encodedword_test.go | 1 + 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 { -- 2.48.1