From 32972235c3e2611f526c2367bb0a8f262d457e2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Vr=C3=A1til?= <daniel.vratil@kdab.com> Date: Wed, 17 Feb 2016 18:52:42 +0100 Subject: [PATCH 43/74] Use OTP to check if message is encrypted instead of KMime::isEncrypted KMime::isEncrypted() does not handle pgp/inline encryption, while the ObjectTreeParser can reliably detect any (nested) encrypted parts. --- kmail/kmcommands.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/kmail/kmcommands.cpp b/kmail/kmcommands.cpp index 59367b70c4..70b149edeb 100644 --- a/kmail/kmcommands.cpp +++ b/kmail/kmcommands.cpp @@ -1463,10 +1463,6 @@ void KMCopyCommand::slotCopyResult( KJob * job ) bool KMCopyCommand::decrypt( KMime::Message::Ptr &msg ) const { - if ( !KMime::isEncrypted( msg.get() ) ) { - return false; - } - MessageViewer::EmptySource source; source.setAllowDecryption(true); MessageViewer::NodeHelper nodeHelper; @@ -1474,8 +1470,14 @@ bool KMCopyCommand::decrypt( KMime::Message::Ptr &msg ) const MessageViewer::ObjectTreeParser otp( &source, &nodeHelper, 0 , true, false, true ); otp.parseObjectTree( msg->topLevel() ); - msg = nodeHelper.unencryptedMessage( msg ); - return true; + // Returns a null Message if msg does not contain any encrypted content + KMime::Message::Ptr decrypted = nodeHelper.unencryptedMessage( msg ); + if (decrypted) { + msg = decrypted; + return true; + } else { + return false; + } } KMMoveCommand::KMMoveCommand( const Akonadi::Collection& destFolder, -- 2.14.1