diff --git a/src/net/mail/message.go b/src/net/mail/message.go index b1d526bba94..aa3a3e78c4e 100644 --- a/src/net/mail/message.go +++ b/src/net/mail/message.go @@ -346,6 +346,9 @@ func (p *addrParser) consumeAddrSpec() (spec string, err error) { // quoted-string debug.Printf("consumeAddrSpec: parsing quoted-string") localPart, err = p.consumeQuotedString() + if localPart == "" { + err = errors.New("mail: empty quoted string in addr-spec") + } } else { // dot-atom debug.Printf("consumeAddrSpec: parsing dot-atom") @@ -463,9 +466,6 @@ Loop: i += size } p.s = p.s[i+1:] - if len(qsb) == 0 { - return "", errors.New("mail: empty quoted-string") - } return string(qsb), nil } diff --git a/src/net/mail/message_test.go b/src/net/mail/message_test.go index b29e375f2e5..f0761ab09fb 100644 --- a/src/net/mail/message_test.go +++ b/src/net/mail/message_test.go @@ -315,6 +315,16 @@ func TestAddressParsing(t *testing.T) { }, }, }, + // Issue 14866 + { + `"" `, + []*Address{ + { + Name: "", + Address: "emptystring@example.com", + }, + }, + }, } for _, test := range tests { if len(test.exp) == 1 {