[PATCH] plugins/base: fix nil pointer deref on invalid From or To address
Export this patch
---
plugins/base/smtp.go | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/plugins/base/smtp.go b/plugins/base/smtp.go
index 1809059..c4bd337 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)
Here the error returned by mail.ParseAddress was ignored.
+ 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)
}
--
2.41.0
Thanks! Pushed with a minor edit, see below.