summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Marek Glogowski <jan-marek.glogowski@extern.cib.de>2020-03-12 18:07:48 +0100
committerVasily Melenchuk <vasily.melenchuk@cib.de>2021-04-15 13:11:59 +0300
commite97849d000dd7d90f74d1b6863d5f744740c742d (patch)
tree785d604e18618d597fb3ff54ad8ed20a73f6e9c9
parentd1c3a935a6f7fbbbdc5dbecd8dcb80db8375d682 (diff)
tdf#42316 always evaluate macro signatures on load
As already stated in the comments of the signing unit tests, disabling macro security will not only ignore the signatures, but actually drop the macro signature, as these are never evaluated and as a result can't be restored for the new document. Change-Id: Ie41a9e72d3367c2eed58a52387bb67d8c41abff3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90435 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> (cherry picked from commit 929d46bbf42aefc1f6cf046c2b9cf3d7c4e1efc5) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90393 Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
-rw-r--r--sfx2/source/doc/objmisc.cxx3
-rw-r--r--xmlsecurity/qa/unit/signing/signing.cxx30
2 files changed, 9 insertions, 24 deletions
diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx
index f6b1e16c54df..1345cff7c021 100644
--- a/sfx2/source/doc/objmisc.cxx
+++ b/sfx2/source/doc/objmisc.cxx
@@ -920,6 +920,9 @@ void SfxObjectShell::BreakMacroSign_Impl( bool bBreakMacroSign )
void SfxObjectShell::CheckSecurityOnLoading_Impl()
{
+ // make sure LO evaluates the macro signatures, so it can be preserved
+ GetScriptingSignatureState();
+
uno::Reference< task::XInteractionHandler > xInteraction;
if ( GetMedium() )
xInteraction = GetMedium()->GetInteractionHandler();
diff --git a/xmlsecurity/qa/unit/signing/signing.cxx b/xmlsecurity/qa/unit/signing/signing.cxx
index a39e1fe7e039..1853b5eead8c 100644
--- a/xmlsecurity/qa/unit/signing/signing.cxx
+++ b/xmlsecurity/qa/unit/signing/signing.cxx
@@ -1124,15 +1124,9 @@ void SigningTest::testPreserveMacroTemplateSignature12()
ODFVER_012_TEXT);
// create new document from template
- // we can't use createDoc / MacrosTest::loadFromDesktop, because ALWAYS_EXECUTE_NO_WARN
- // won't verify the signature for templates, so the resulting document won't be able to
- // preserve the templates signature.
mxComponent->dispose();
- mxComponent = mxDesktop->loadComponentFromURL(
- aURL, "_default", 0,
- comphelper::InitPropertySequence(
- { { "MacroExecutionMode",
- uno::Any(document::MacroExecMode::FROM_LIST_AND_SIGNED_NO_WARN) } }));
+ mxComponent = mxDesktop->loadComponentFromURL(aURL, "_default", 0,
+ uno::Sequence<beans::PropertyValue>(0));
CPPUNIT_ASSERT_MESSAGE(OUStringToOString(sLoadMessage, RTL_TEXTENCODING_UTF8).getStr(),
mxComponent.is());
@@ -1234,15 +1228,9 @@ void SigningTest::testDropMacroTemplateSignature()
SignatureState::NOTVALIDATED, OUString());
// create new document from template
- // we can't use createDoc / MacrosTest::loadFromDesktop, because ALWAYS_EXECUTE_NO_WARN
- // won't verify the signature for templates, so the resulting document won't be able to
- // preserve the templates signature.
mxComponent->dispose();
- mxComponent = mxDesktop->loadComponentFromURL(
- aURL, "_default", 0,
- comphelper::InitPropertySequence(
- { { "MacroExecutionMode",
- uno::Any(document::MacroExecMode::FROM_LIST_AND_SIGNED_NO_WARN) } }));
+ mxComponent = mxDesktop->loadComponentFromURL(aURL, "_default", 0,
+ uno::Sequence<beans::PropertyValue>(0));
CPPUNIT_ASSERT_MESSAGE(OUStringToOString(sLoadMessage, RTL_TEXTENCODING_UTF8).getStr(),
mxComponent.is());
@@ -1364,15 +1352,9 @@ void SigningTest::testPreserveMacroTemplateSignature10()
SignatureState::NOTVALIDATED, OUString());
// create new document from template
- // we can't use createDoc / MacrosTest::loadFromDesktop, because ALWAYS_EXECUTE_NO_WARN
- // won't verify the signature for templates, so the resulting document won't be able to
- // preserve the templates signature.
mxComponent->dispose();
- mxComponent = mxDesktop->loadComponentFromURL(
- aURL, "_default", 0,
- comphelper::InitPropertySequence(
- { { "MacroExecutionMode",
- uno::Any(document::MacroExecMode::FROM_LIST_AND_SIGNED_NO_WARN) } }));
+ mxComponent = mxDesktop->loadComponentFromURL(aURL, "_default", 0,
+ uno::Sequence<beans::PropertyValue>(0));
CPPUNIT_ASSERT_MESSAGE(OUStringToOString(sLoadMessage, RTL_TEXTENCODING_UTF8).getStr(),
mxComponent.is());