]> Cypherpunks repositories - gostls13.git/commitdiff
net/mail: fixed quoted-local
authorMathiasB <git@denbeke.be>
Fri, 31 Jul 2015 10:25:06 +0000 (12:25 +0200)
committerRuss Cox <rsc@golang.org>
Fri, 31 Jul 2015 16:11:21 +0000 (16:11 +0000)
Fixes some minor issues regarding quoted-string when parsing
the local-part.

Those strings should return an error:
- quoted-string without any content: `""@test.com`
- quoted-string containing tab: "\"\t\"@test.com"

Fixes #11293

Change-Id: Ied93eb6831915c9b1f8e727cea14168af21f8d3b
Reviewed-on: https://go-review.googlesource.com/12905
Reviewed-by: Russ Cox <rsc@golang.org>
src/net/mail/message.go
src/net/mail/message_test.go

index 2d8e380cd9e036bbf9b9e4abee48800e20bbb931..8ddb313b47a73ccb33fbfa898d59796ca007f9f4 100644 (file)
@@ -419,7 +419,7 @@ Loop:
                        }
                        qsb = append(qsb, p.s[i+1])
                        i += 2
-               case isQtext(c), c == ' ' || c == '\t':
+               case isQtext(c), c == ' ':
                        // qtext (printable US-ASCII excluding " and \), or
                        // FWS (almost; we're ignoring CRLF)
                        qsb = append(qsb, c)
@@ -429,6 +429,9 @@ Loop:
                }
        }
        p.s = p.s[i+1:]
+       if len(qsb) == 0 {
+               return "", errors.New("mail: empty quoted-string")
+       }
        return string(qsb), nil
 }
 
index 1da3213f7e386959f2822d1810fae5c9d1e96c1f..ffe9af9bf639ac87b077e0d2d6943f245fca648c 100644 (file)
@@ -522,6 +522,7 @@ func TestAddressParsingAndFormatting(t *testing.T) {
                `<".john.doe"@example.com>`,
                `<"."@example.com>`,
                `<".."@example.com>`,
+               `<"0:"@0>`,
        }
 
        for _, test := range tests {
@@ -563,6 +564,8 @@ func TestAddressParsingAndFormatting(t *testing.T) {
                `<test@.>`,
                `< @example.com>`,
                `<""test""blah""@example.com>`,
+               `<""@0>`,
+               "<\"\t0\"@0>",
        }
 
        for _, test := range badTests {