summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorVasily Melenchuk <vasily.melenchuk@cib.de>2020-10-17 10:00:04 +0300
committerCaolán McNamara <caolanm@redhat.com>2020-10-17 20:57:54 +0200
commit0de0b1b64a1c122254bb821ea0eb9b038875e8d4 (patch)
tree337c078d41d8e035905ae4e7b0744853ed080ca2 /sfx2
parent5dda71e33e8d7e5b6433b7c3b48115c6738a177f (diff)
tdf#133771: remove encryption data during SaveAs
If document was password protected but during SaveAs it wasn't selected to use a password we should remove EcnryptionData. But we should not do this unconditionally: in general case we should try to keep all encryption metadata. Change-Id: Id91a88790deccd7377fb5d394b36395d13748c31 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104454 Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> (cherry picked from commit dd4670b976b00d643f335516fe5fd0c880d58025) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104345 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/source/doc/objstor.cxx33
1 files changed, 30 insertions, 3 deletions
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index 308ab1dfd0d4..fd405517265f 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -2787,11 +2787,38 @@ bool SfxObjectShell::PreDoSaveAs_Impl(const OUString& rFileName, const OUString&
// in "SaveAs" title and password will be cleared ( maybe the new itemset contains new values, otherwise they will be empty )
// #i119366# - As the SID_ENCRYPTIONDATA and SID_PASSWORD are using for setting password together, we need to clear them both.
// Also, ( maybe the new itemset contains new values, otherwise they will be empty )
- if (xMergedParams->HasItem( SID_PASSWORD ))
+ if (xMergedParams->HasItem(SID_ENCRYPTIONDATA))
{
- xMergedParams->ClearItem( SID_PASSWORD );
- xMergedParams->ClearItem( SID_ENCRYPTIONDATA );
+ bool bPasswordProtected = true;
+ const SfxUnoAnyItem* pEncryptionDataItem
+ = xMergedParams->GetItem<SfxUnoAnyItem>(SID_ENCRYPTIONDATA, false);
+ if (pEncryptionDataItem)
+ {
+ uno::Sequence<beans::NamedValue> aEncryptionData;
+ pEncryptionDataItem->GetValue() >>= aEncryptionData;
+ for (const auto& rItem : std::as_const(aEncryptionData))
+ {
+ if (rItem.Name == "CryptoType")
+ {
+ OUString aValue;
+ rItem.Value >>= aValue;
+ if (aValue != "StrongEncryptionDataSpace")
+ {
+ // This is not just a password protected document. Let's keep encryption data as is.
+ bPasswordProtected = false;
+ }
+ break;
+ }
+ }
+ }
+ if (bPasswordProtected)
+ {
+ // For password protected documents remove encryption data during "Save as..."
+ xMergedParams->ClearItem(SID_PASSWORD);
+ xMergedParams->ClearItem(SID_ENCRYPTIONDATA);
+ }
}
+
xMergedParams->ClearItem( SID_DOCINFO_TITLE );
xMergedParams->ClearItem( SID_INPUTSTREAM );