summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-12-23 19:32:50 +0000
committerCaolán McNamara <caolanm@redhat.com>2020-12-27 20:33:05 +0100
commit2d348132ab307e866dc2be8282b6e16aac65d29d (patch)
treebc9e817b2ddbc3134cc418317894b1aaa090d43a /oox
parent2f269aae084a7366a6111185f86a5e852629dfa8 (diff)
ofz#28918 Direct-Leak in SotStorage::OpenSotStream
Change-Id: I2d99a13822b07d98e03d7e7de91ca44ab4f8599d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108266 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'oox')
-rw-r--r--oox/source/ole/vbaexport.cxx42
1 files changed, 21 insertions, 21 deletions
diff --git a/oox/source/ole/vbaexport.cxx b/oox/source/ole/vbaexport.cxx
index 9b77a84bea70..4b3e1f092c3c 100644
--- a/oox/source/ole/vbaexport.cxx
+++ b/oox/source/ole/vbaexport.cxx
@@ -1001,10 +1001,10 @@ void getCorrectExportOrder(const css::uno::Reference<css::container::XNameContai
#if VBA_USE_ORIGINAL_WM_STREAM || VBA_USE_ORIGINAL_DIR_STREAM \
|| VBA_USE_ORIGINAL_PROJECT_STREAM || VBA_USE_ORIGINAL_VBA_PROJECT \
|| VBA_USE_ORIGINAL_DIR_STREAM
-void addFileStreamToSotStream(const OUString& rPath, SotStorageStream* pStream)
+void addFileStreamToSotStream(const OUString& rPath, SotStorageStream& rStream)
{
SvFileStream aFileStream(rPath, StreamMode::READWRITE);
- pStream->WriteStream(aFileStream);
+ rStream.WriteStream(aFileStream);
}
#endif
@@ -1023,36 +1023,36 @@ void VbaExport::exportVBA(SotStorage* pRootStorage)
// start here with the VBA export
tools::SvRef<SotStorage> xVBAStream = pRootStorage->OpenSotStorage("VBA", StreamMode::READWRITE);
- SotStorageStream* pDirStream = xVBAStream->OpenSotStream("dir", StreamMode::READWRITE);
+ tools::SvRef<SotStorageStream> pDirStream = xVBAStream->OpenSotStream("dir", StreamMode::READWRITE);
- SotStorageStream* pVBAProjectStream = xVBAStream->OpenSotStream("_VBA_PROJECT", StreamMode::READWRITE);
- SotStorageStream* pPROJECTStream = pRootStorage->OpenSotStream("PROJECT", StreamMode::READWRITE);
- SotStorageStream* pPROJECTwmStream = pRootStorage->OpenSotStream("PROJECTwm", StreamMode::READWRITE);
+ tools::SvRef<SotStorageStream> pVBAProjectStream = xVBAStream->OpenSotStream("_VBA_PROJECT", StreamMode::READWRITE);
+ tools::SvRef<SotStorageStream> pPROJECTStream = pRootStorage->OpenSotStream("PROJECT", StreamMode::READWRITE);
+ tools::SvRef<SotStorageStream> pPROJECTwmStream = pRootStorage->OpenSotStream("PROJECTwm", StreamMode::READWRITE);
#if VBA_USE_ORIGINAL_WM_STREAM
OUString aProjectwmPath = "/home/moggi/Documents/testfiles/vba/PROJECTwm";
- addFileStreamToSotStream(aProjectwmPath, pPROJECTwmStream);
+ addFileStreamToSotStream(aProjectwmPath, *pPROJECTwmStream);
#else
exportPROJECTwmStream(*pPROJECTwmStream, aElementNames, aLibraryMap);
#endif
#if VBA_USE_ORIGINAL_DIR_STREAM
OUString aDirPath = "/home/moggi/Documents/testfiles/vba/VBA/dir";
- addFileStreamToSotStream(aDirPath, pDirStream);
+ addFileStreamToSotStream(aDirPath, *pDirStream);
#else
exportDirStream(*pDirStream, xNameContainer, aLibraryMap, getProjectName());
#endif
#if VBA_USE_ORIGINAL_PROJECT_STREAM
OUString aProjectPath = "/home/moggi/Documents/testfiles/vba/PROJECT";
- addFileStreamToSotStream(aProjectPath, pPROJECTStream);
+ addFileStreamToSotStream(aProjectPath, *pPROJECTStream);
#else
exportPROJECTStream(*pPROJECTStream, xNameContainer, getProjectName(), aLibraryMap);
#endif
#if VBA_USE_ORIGINAL_VBA_PROJECT
OUString a_VBA_ProjectPath = "/home/moggi/Documents/testfiles/vba/VBA/_VBA_PROJECT";
- addFileStreamToSotStream(a_VBA_ProjectPath, pVBAProjectStream);
+ addFileStreamToSotStream(a_VBA_ProjectPath, *pVBAProjectStream);
#else
exportVBAProjectStream(*pVBAProjectStream);
#endif
@@ -1063,16 +1063,16 @@ void VbaExport::exportVBA(SotStorage* pRootStorage)
OUString aSheet2Path = "/home/moggi/Documents/testfiles/vba/VBA/Sheet2";
OUString aSheet3Path = "/home/moggi/Documents/testfiles/vba/VBA/Sheet3";
OUString aWorkbookPath = "/home/moggi/Documents/testfiles/vba/VBA/ThisWorkbook";
- SotStorageStream* pModule1Stream = xVBAStream->OpenSotStream("Module1", StreamMode::READWRITE);
- SotStorageStream* pSheet1Stream = xVBAStream->OpenSotStream("Sheet1", StreamMode::READWRITE);
- SotStorageStream* pSheet2Stream = xVBAStream->OpenSotStream("Sheet2", StreamMode::READWRITE);
- SotStorageStream* pSheet3Stream = xVBAStream->OpenSotStream("Sheet3", StreamMode::READWRITE);
- SotStorageStream* pWorkbookStream = xVBAStream->OpenSotStream("ThisWorkbook", StreamMode::READWRITE);
- addFileStreamToSotStream(aModule1Path, pModule1Stream);
- addFileStreamToSotStream(aSheet1Path, pSheet1Stream);
- addFileStreamToSotStream(aSheet2Path, pSheet2Stream);
- addFileStreamToSotStream(aSheet3Path, pSheet3Stream);
- addFileStreamToSotStream(aWorkbookPath, pWorkbookStream);
+ tools::SvRef<SotStorageStream> pModule1Stream = xVBAStream->OpenSotStream("Module1", StreamMode::READWRITE);
+ tools::SvRef<SotStorageStream> pSheet1Stream = xVBAStream->OpenSotStream("Sheet1", StreamMode::READWRITE);
+ tools::SvRef<SotStorageStream> pSheet2Stream = xVBAStream->OpenSotStream("Sheet2", StreamMode::READWRITE);
+ tools::SvRef<SotStorageStream> pSheet3Stream = xVBAStream->OpenSotStream("Sheet3", StreamMode::READWRITE);
+ tools::SvRef<SotStorageStream> pWorkbookStream = xVBAStream->OpenSotStream("ThisWorkbook", StreamMode::READWRITE);
+ addFileStreamToSotStream(aModule1Path, *pModule1Stream);
+ addFileStreamToSotStream(aSheet1Path, *pSheet1Stream);
+ addFileStreamToSotStream(aSheet2Path, *pSheet2Stream);
+ addFileStreamToSotStream(aSheet3Path, *pSheet3Stream);
+ addFileStreamToSotStream(aWorkbookPath, *pWorkbookStream);
pModule1Stream->Commit();
pSheet1Stream->Commit();
@@ -1085,7 +1085,7 @@ void VbaExport::exportVBA(SotStorage* pRootStorage)
for (sal_Int32 i = 0; i < n; ++i)
{
const OUString& rModuleName = aElementNames[aLibraryMap[i]];
- SotStorageStream* pModuleStream = xVBAStream->OpenSotStream(rModuleName, StreamMode::READWRITE);
+ tools::SvRef<SotStorageStream> pModuleStream = xVBAStream->OpenSotStream(rModuleName, StreamMode::READWRITE);
css::uno::Any aCode = xNameContainer->getByName(rModuleName);
css::script::ModuleInfo aModuleInfo = xModuleInfo->getModuleInfo(rModuleName);
OUString aSourceCode;