diff options
author | 2013-08-30 20:17:02 -0700 | |
---|---|---|
committer | 2013-08-30 20:17:02 -0700 | |
commit | 4d26945576b34192b10148df7f1d5879d0448f18 (patch) | |
tree | 9ed50a421156a23d467c6892406d0a91e0456ca9 | |
parent | a50dcb62b2101695deb7cdfd10b4f0f3e595d62f (diff) |
Fixed crash when message does not contain sender or recipient
-rw-r--r-- | src/core/abstract/MCMessageConstants.h | 2 | ||||
-rw-r--r-- | src/core/smtp/MCSMTPSession.cc | 9 | ||||
-rw-r--r-- | src/objc/abstract/MCOConstants.h | 4 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/core/abstract/MCMessageConstants.h b/src/core/abstract/MCMessageConstants.h index 30ce0efc..f536c59e 100644 --- a/src/core/abstract/MCMessageConstants.h +++ b/src/core/abstract/MCMessageConstants.h @@ -209,6 +209,8 @@ namespace mailcore { ErrorInvalidAccount, ErrorFile, ErrorCompression, + ErrorNoSender, + ErrorNoRecipient, }; enum PartType { diff --git a/src/core/smtp/MCSMTPSession.cc b/src/core/smtp/MCSMTPSession.cc index 78eb4113..4b31fd6d 100644 --- a/src/core/smtp/MCSMTPSession.cc +++ b/src/core/smtp/MCSMTPSession.cc @@ -579,6 +579,15 @@ void SMTPSession::sendMessage(Address * from, Array * recipients, Data * message clist * address_list; int r; + if (from == NULL) { + * pError = ErrorNoSender; + return; + } + if ((recipients == NULL) || (recipients->count() == 0)) { + * pError = ErrorNoRecipient; + return; + } + messageData = dataWithFilteredBcc(messageData); mProgressCallback = callback; diff --git a/src/objc/abstract/MCOConstants.h b/src/objc/abstract/MCOConstants.h index 0e13f986..b2516754 100644 --- a/src/objc/abstract/MCOConstants.h +++ b/src/objc/abstract/MCOConstants.h @@ -330,6 +330,10 @@ typedef enum { MCOErrorInvalidAccount, /** IMAP: Error when trying to enable compression.*/ MCOErrorCompression, + /** SMTP: Error when no sender has been specified.*/ + MCOErrorNoSender, + /** SMTP: Error when no recipient has been specified.*/ + MCOErrorNoRecipient, /** The count of all errors */ MCOErrorCodeCount, } MCOErrorCode; |