From 72dad9fb7074808261c9a70c5719dbc93324b18e Mon Sep 17 00:00:00 2001 From: Bernhard Froehlich Date: Fri, 21 Dec 2018 14:10:34 +0000 Subject: [PATCH] Handle error cases for user supplied regexp --- main.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index fa18bd1..d42f4cd 100644 --- a/main.go +++ b/main.go @@ -66,13 +66,17 @@ func senderChecker(peer smtpd.Peer, addr string) error { return nil } - re := regexp.MustCompile(*allowedSender) + re, err := regexp.Compile(*allowedSender) + if err != nil { + log.Printf("allowed_sender invalid: %v\n", err) + return smtpd.Error{Code: 451, Message: "Bad sender address"} + } if re.MatchString(addr) { return nil - } else { - return smtpd.Error{Code: 451, Message: "Bad sender address"} } + + return smtpd.Error{Code: 451, Message: "Bad sender address"} } func recipientChecker(peer smtpd.Peer, addr string) error { @@ -80,13 +84,17 @@ func recipientChecker(peer smtpd.Peer, addr string) error { return nil } - re := regexp.MustCompile(*allowedRecipients) + re, err := regexp.Compile(*allowedRecipients) + if err != nil { + log.Printf("allowed_recipients invalid: %v\n", err) + return smtpd.Error{Code: 451, Message: "Bad recipient address"} + } if re.MatchString(addr) { return nil - } else { - return smtpd.Error{Code: 451, Message: "Bad recipient address"} } + + return smtpd.Error{Code: 451, Message: "Bad recipient address"} } func authChecker(peer smtpd.Peer, username string, password string) error {