diff options
-rw-r--r-- | src/libraries/qmfclient/qmailmessage.cpp | 18 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapstructure.cpp | 7 |
2 files changed, 20 insertions, 5 deletions
diff --git a/src/libraries/qmfclient/qmailmessage.cpp b/src/libraries/qmfclient/qmailmessage.cpp index c7c075b6..da8b74b7 100644 --- a/src/libraries/qmfclient/qmailmessage.cpp +++ b/src/libraries/qmfclient/qmailmessage.cpp @@ -3942,8 +3942,13 @@ const QMailMessagePart& QMailMessagePartContainerPrivate::partAt(const QMailMess const QList<QMailMessagePart>* partList = &_messageParts; foreach (uint index, location.d->_indices) { - part = &(partList->at(index - 1)); - partList = &(part->impl<const QMailMessagePartContainerPrivate>()->_messageParts); + if (index >= 0 && index <= partList->size()) { + part = &(partList->at(index - 1)); + partList = &(part->impl<const QMailMessagePartContainerPrivate>()->_messageParts); + } else { + qMailLog(Messaging) << Q_FUNC_INFO << "Invalid index, container does not have a part at " << index; + Q_ASSERT(false); + } } Q_ASSERT(part); @@ -3956,8 +3961,13 @@ QMailMessagePart& QMailMessagePartContainerPrivate::partAt(const QMailMessagePar QList<QMailMessagePart>* partList = &_messageParts; foreach (uint index, location.d->_indices) { - part = &((*partList)[index - 1]); - partList = &(part->impl<QMailMessagePartContainerPrivate>()->_messageParts); + if (index >= 0 && index <= partList->size()) { + part = &((*partList)[index - 1]); + partList = &(part->impl<QMailMessagePartContainerPrivate>()->_messageParts); + } else { + qMailLog(Messaging) << Q_FUNC_INFO << "Invalid index, container does not have a part at " << index; + Q_ASSERT(false); + } } return *part; diff --git a/src/plugins/messageservices/imap/imapstructure.cpp b/src/plugins/messageservices/imap/imapstructure.cpp index a634d9ef..a962d089 100644 --- a/src/plugins/messageservices/imap/imapstructure.cpp +++ b/src/plugins/messageservices/imap/imapstructure.cpp @@ -427,7 +427,12 @@ void setMultipartFromDescription(const QStringList &structure, QMailMessagePartC } for ( ; (it != end) && ((it + 1) != end); it += 2) { if ((*it).trimmed().toUpper() == "BOUNDARY") { - container->setBoundary((*(it + 1)).toLatin1()); + const QString boundary((*(it + 1))); + if (boundary.toUpper() == "NIL") { + container->setBoundary(QByteArray()); + } else { + container->setBoundary(boundary.toLatin1()); + } } } } |