[ELTS]
cast pointer like with similar code in context
Change-Id: I0317f80989e9dabd23e88e3caab26ede3fb5bd56
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169883
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
(cherry picked from commit
8b333575ee680664fa3d83249ccec90881754ad7)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169930
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171910
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Gbp-Pq: Name do-not-trust-any-signature-on-repaired-package.diff
void SfxObjectShell::CheckSecurityOnLoading_Impl()
{
+ if (GetErrorCode() == ERRCODE_IO_BROKENPACKAGE)
+ { // safety first: don't run any macros from broken package.
+ pImpl->aMacroMode.disallowMacroExecution();
+ return; // do not get signature status - needs to be done after RepairPackage
+ }
+
// make sure LO evaluates the macro signatures, so it can be preserved
GetScriptingSignatureState();
uno::Sequence< security::DocumentSignatureInformation > aInfos = GetDocumentSignatureInformation( bScriptingContent );
*pState = DocumentSignatures::getSignatureState(aInfos);
+
+ // repaired package cannot be trusted
+ if (*pState != SignatureState::NOSIGNATURES)
+ {
+ SfxBoolItem const*const pRepairItem{SfxItemSet::GetItem<SfxBoolItem>(GetMedium()->GetItemSet(), SID_REPAIRPACKAGE, false)};
+ if (pRepairItem && pRepairItem->GetValue())
+ {
+ *pState = SignatureState::BROKEN;
+ }
+ }
}
if ( *pState == SignatureState::OK || *pState == SignatureState::NOTVALIDATED
{
// only for internal use
pImpl->m_xDocStorage.clear();
+ pImpl->nDocumentSignatureState = SignatureState::UNKNOWN;
+ pImpl->nScriptingSignatureState = SignatureState::UNKNOWN;
pImpl->m_bIsInit = false;
ResetError();
}