diff options
author | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2020-04-21 07:43:26 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2020-05-06 22:25:43 +0200 |
commit | bee856774aa3ffbee314d096e5debe8d8170af06 (patch) | |
tree | c7a4746a5cc5f0985fa792ad9ffb1e6c7206e8e3 /dbaccess | |
parent | 7b7c26d3dd03a3b688ac3765a3d3fa1b5b246e39 (diff) |
Fix storage access after saving
Change-Id: I2cd664ac2ca5e80c566efee35bd34e7223501d75
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92605
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
(cherry picked from commit 7dbff6fa55829e53be042e213b454d2466ff80fa)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93190
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'dbaccess')
-rw-r--r-- | dbaccess/source/core/dataaccess/ModelImpl.cxx | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/dbaccess/source/core/dataaccess/ModelImpl.cxx b/dbaccess/source/core/dataaccess/ModelImpl.cxx index b88e3b06b761..d5c3b9b3e086 100644 --- a/dbaccess/source/core/dataaccess/ModelImpl.cxx +++ b/dbaccess/source/core/dataaccess/ModelImpl.cxx @@ -881,10 +881,6 @@ bool ODatabaseModelImpl::commitStorageIfWriteable_ignoreErrors( const Reference< // Preserve script signature if the script has not changed if (bTryToPreserveScriptSignature) { - // Need to close this storage, otherwise we can't open it for signing below - // (Windows needs exclusive file access) - //uno::Reference < lang::XComponent > xComp = xCurrentStorage; - //xComp->dispose(); OUString aODFVersion(comphelper::OStorageHelper::GetODFVersionFromStorage(_rxStorage)); uno::Reference<security::XDocumentDigitalSignatures> xDDSigns; try @@ -905,15 +901,8 @@ bool ODatabaseModelImpl::commitStorageIfWriteable_ignoreErrors( const Reference< uno::Reference<embed::XStorage> xMetaInf = xReadOrig->openStorageElement("META-INF", embed::ElementModes::READ); - OUString aURL = getDocFileLocation(); - Reference<XStorage> xTarget - = comphelper::OStorageHelper::GetStorageOfFormatFromURL( - ZIP_STORAGE_FORMAT_STRING, aURL, ElementModes::READWRITE); - if (!xTarget.is()) - throw uno::RuntimeException("Could not read " + aURL); uno::Reference<embed::XStorage> xTargetMetaInf - = xTarget->openStorageElement("META-INF", embed::ElementModes::READWRITE); - + = _rxStorage->openStorageElement("META-INF", embed::ElementModes::READWRITE); if (xMetaInf.is() && xTargetMetaInf.is()) { xMetaInf->copyElementTo(aScriptSignName, xTargetMetaInf, aScriptSignName); @@ -928,13 +917,13 @@ bool ODatabaseModelImpl::commitStorageIfWriteable_ignoreErrors( const Reference< // now check the copied signature uno::Sequence<security::DocumentSignatureInformation> aInfos = xDDSigns->verifyScriptingContentSignatures( - xTarget, uno::Reference<io::XInputStream>()); + _rxStorage, uno::Reference<io::XInputStream>()); SignatureState nState = DocumentSignatures::getSignatureState(aInfos); if (nState == SignatureState::OK || nState == SignatureState::NOTVALIDATED || nState == SignatureState::PARTIAL_OK) { // commit the ZipStorage from target medium - xTransact.set(xTarget, uno::UNO_QUERY); + xTransact.set(_rxStorage, uno::UNO_QUERY); if (xTransact.is()) xTransact->commit(); } |