From 4d26945576b34192b10148df7f1d5879d0448f18 Mon Sep 17 00:00:00 2001 From: "Hoa V. DINH" Date: Fri, 30 Aug 2013 20:17:02 -0700 Subject: Fixed crash when message does not contain sender or recipient --- src/core/abstract/MCMessageConstants.h | 2 ++ src/core/smtp/MCSMTPSession.cc | 9 +++++++++ src/objc/abstract/MCOConstants.h | 4 ++++ 3 files changed, 15 insertions(+) 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; -- cgit v1.2.3