Sophie

Sophie

distrib > Mageia > 5 > i586 > by-pkgid > cf746698214707f972e669b661d0ae59 > files > 43

kdepim4-4.14.10-1.3.mga5.src.rpm

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