diff options
author | 2023-07-01 21:26:26 +0200 | |
---|---|---|
committer | 2023-07-02 09:42:31 +0200 | |
commit | 8c49a2faf5acc725459e3904da2cd0c3908768a6 (patch) | |
tree | 37ae5433652f2a6826f3666762b4b61d3492599d | |
parent | ab8b5f7678da886eb55216832ef47a730f5a4830 (diff) | |
download | alps-8c49a2faf5acc725459e3904da2cd0c3908768a6.tar.gz alps-8c49a2faf5acc725459e3904da2cd0c3908768a6.tar.bz2 alps-8c49a2faf5acc725459e3904da2cd0c3908768a6.zip |
plugins/base: fix nil pointer deref on invalid From or To address
-rw-r--r-- | plugins/base/smtp.go | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/plugins/base/smtp.go b/plugins/base/smtp.go index 1809059..7bb5ccd 100644 --- a/plugins/base/smtp.go +++ b/plugins/base/smtp.go @@ -190,13 +190,21 @@ func (msg *OutgoingMessage) WriteTo(w io.Writer) error { } func sendMessage(c *smtp.Client, msg *OutgoingMessage) error { - addr, _ := mail.ParseAddress(msg.From) + addr, err := mail.ParseAddress(msg.From) + if err != nil { + return fmt.Errorf("parsing 'From' address failed: %v", err) + } + if err := c.Mail(addr.Address, nil); err != nil { return fmt.Errorf("MAIL FROM failed: %v", err) } for _, to := range msg.To { - addr, _ := mail.ParseAddress(to) + addr, err := mail.ParseAddress(to) + if err != nil { + return fmt.Errorf("parsing 'To' address failed: %v", err) + } + if err := c.Rcpt(addr.Address); err != nil { return fmt.Errorf("RCPT TO failed: %v (%s)", err, addr.Address) } |