forked from Silverfish/proton-bridge
Validate recipient emails in send before asking for their public keys
This commit is contained in:
@ -209,6 +209,10 @@ func (su *smtpUser) Send(from string, to []string, messageReader io.Reader) (err
|
||||
containsUnencryptedRecipients := false
|
||||
|
||||
for _, email := range to {
|
||||
if !looksLikeEmail(email) {
|
||||
return errors.New(`"` + email + `" is not a valid recipient.`)
|
||||
}
|
||||
|
||||
// PMEL 1.
|
||||
contactEmails, err := su.client.GetContactEmailByEmail(email, 0, 1000)
|
||||
if err != nil {
|
||||
|
||||
@ -19,11 +19,23 @@ package smtp
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"regexp"
|
||||
|
||||
pmcrypto "github.com/ProtonMail/gopenpgp/crypto"
|
||||
"github.com/ProtonMail/proton-bridge/pkg/pmapi"
|
||||
)
|
||||
|
||||
//nolint:gochecknoglobals // Used like a constant
|
||||
var mailFormat = regexp.MustCompile(`.+@.+\..+`)
|
||||
|
||||
// looksLikeEmail validates whether the string resembles an email.
|
||||
//
|
||||
// Notice that it does this naively by simply checking for the existence
|
||||
// of a DOT and an AT sign.
|
||||
func looksLikeEmail(e string) bool {
|
||||
return mailFormat.MatchString(e)
|
||||
}
|
||||
|
||||
func createPackets(
|
||||
pubkey *pmcrypto.KeyRing,
|
||||
bodyKey *pmcrypto.SymmetricKey,
|
||||
|
||||
Reference in New Issue
Block a user