aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-08-30 20:17:02 -0700
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-08-30 20:17:02 -0700
commit4d26945576b34192b10148df7f1d5879d0448f18 (patch)
tree9ed50a421156a23d467c6892406d0a91e0456ca9
parenta50dcb62b2101695deb7cdfd10b4f0f3e595d62f (diff)
Fixed crash when message does not contain sender or recipient
-rw-r--r--src/core/abstract/MCMessageConstants.h2
-rw-r--r--src/core/smtp/MCSMTPSession.cc9
-rw-r--r--src/objc/abstract/MCOConstants.h4
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;