aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-01-24 19:37:00 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-01-24 19:37:00 +0100
commit866f1102f786c19a67e3857f891eaf5107550663 (patch)
treed524606c39b8ad3955926a7c17a7a9a5221ed2f4 /pkg
parent9a6ff11ff98e8137871648ee1a35a0a0e0b57adb (diff)
pkg/email: handle emails without Content-Type header
git-send-email sends emails without Content-Type, let's assume it's text.
Diffstat (limited to 'pkg')
-rw-r--r--pkg/email/parser.go11
-rw-r--r--pkg/email/parser_test.go1
2 files changed, 8 insertions, 4 deletions
diff --git a/pkg/email/parser.go b/pkg/email/parser.go
index 37490af1d..702c17a0c 100644
--- a/pkg/email/parser.go
+++ b/pkg/email/parser.go
@@ -246,9 +246,14 @@ func extractArgsLine(body []byte) string {
}
func parseBody(r io.Reader, headers mail.Header) (body []byte, attachments [][]byte, err error) {
- mediaType, params, err := mime.ParseMediaType(headers.Get("Content-Type"))
- if err != nil {
- return nil, nil, fmt.Errorf("failed to parse email header 'Content-Type': %v", err)
+ // git-send-email sends emails without Content-Type, let's assume it's text.
+ mediaType := "text/plain"
+ var params map[string]string
+ if contentType := headers.Get("Content-Type"); contentType != "" {
+ mediaType, params, err = mime.ParseMediaType(headers.Get("Content-Type"))
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to parse email header 'Content-Type': %v", err)
+ }
}
// Note: mime package handles quoted-printable internally.
if strings.ToLower(headers.Get("Content-Transfer-Encoding")) == "base64" {
diff --git a/pkg/email/parser_test.go b/pkg/email/parser_test.go
index ed4a76f27..69e237806 100644
--- a/pkg/email/parser_test.go
+++ b/pkg/email/parser_test.go
@@ -320,7 +320,6 @@ Message-ID: <123>
Subject: test subject
From: Bob <bob@example.com>
To: syzbot <bot@example.com>, Alice <alice@example.com>
-Content-Type: text/plain
#syz invalid
text body