summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-10-09 09:49:01 +0200
committerAndras Timar <andras.timar@collabora.com>2015-10-17 23:35:05 +0200
commit36f8686f56fe90b202ff0c30773d2b17200e10df (patch)
tree0c7fc420da77cf623a20f3d3c784da8dff548a79
parent7b43f1aaaf294cf0719d6114cad8a966cb92f705 (diff)
Resolves: tdf#93613 let referenced document evaluate macro config
... if the current document allows macros. Change-Id: I927981334e27d073696286ba680777a645d53653 (cherry picked from commit 8e2acdbcbd3afc1777d6e68a83ebbe6d8dd77645) Reviewed-on: https://gerrit.libreoffice.org/19266 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit 6fb4312af9968631eac0c05129a0e255fc411ad4)
-rw-r--r--sc/source/ui/docshell/externalrefmgr.cxx16
1 files changed, 16 insertions, 0 deletions
diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx
index 0296cf57bcb9..da99b450991e 100644
--- a/sc/source/ui/docshell/externalrefmgr.cxx
+++ b/sc/source/ui/docshell/externalrefmgr.cxx
@@ -55,6 +55,7 @@
#include "scmatrix.hxx"
#include <columnspanset.hxx>
#include <column.hxx>
+#include <com/sun/star/document/MacroExecMode.hpp>
#include <memory>
#include <algorithm>
@@ -2388,6 +2389,21 @@ SfxObjectShellRef ScExternalRefManager::loadSrcDocument(sal_uInt16 nFileId, OUSt
// make medium hidden to prevent assertion from progress bar
pSet->Put( SfxBoolItem(SID_HIDDEN, true) );
+ // If the current document is allowed to execute macros then the referenced
+ // document may execute macros according to the security configuration.
+ SfxObjectShell* pShell = mpDoc->GetDocumentShell();
+ if (pShell)
+ {
+ SfxMedium* pMedium = pShell->GetMedium();
+ if (pMedium)
+ {
+ const SfxPoolItem* pItem;
+ if (pMedium->GetItemSet()->GetItemState( SID_MACROEXECMODE, false, &pItem ) == SfxItemState::SET &&
+ static_cast<const SfxUInt16Item*>(pItem)->GetValue() != css::document::MacroExecMode::NEVER_EXECUTE)
+ pSet->Put( SfxUInt16Item( SID_MACROEXECMODE, css::document::MacroExecMode::USE_CONFIG));
+ }
+ }
+
unique_ptr<SfxMedium> pMedium(new SfxMedium(aFile, STREAM_STD_READ, pFilter, pSet));
if (pMedium->GetError() != ERRCODE_NONE)
return NULL;