From f9128f9848de25d80bb032b872f03839f6a3b467 Mon Sep 17 00:00:00 2001 From: Thorsten Behrens Date: Fri, 16 Dec 2011 01:30:22 +0100 Subject: [PATCH] Fix inconsistent compression method for encrypted ZIP packages. While fixing n#653688, turned out we write method=STORED into local file headers, and method=DEFLATED into central directory structure for encrypted ODF. Damn side-effects - fixed as hopefully intended here. --- package/source/zippackage/ZipPackageFolder.cxx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package/source/zippackage/ZipPackageFolder.cxx b/package/source/zippackage/ZipPackageFolder.cxx index 60f5cd1ff7ba..daee0f4fd0e1 100644 --- a/package/source/zippackage/ZipPackageFolder.cxx +++ b/package/source/zippackage/ZipPackageFolder.cxx @@ -657,16 +657,16 @@ bool ZipPackageFolder::saveChild( const ::rtl::OUString &rShortName, const Conte rInfo.pStream->SetToBeEncrypted( sal_True ); } - // Remove hacky bit from entry flags - if ( pTempEntry->nFlag & ( 1 << 4 ) ) - { - pTempEntry->nFlag &= ~( 1 << 4 ); - pTempEntry->nMethod = STORED; - } - // Then copy it back afterwards... ZipPackageFolder::copyZipEntry ( rInfo.pStream->aEntry, *pTempEntry ); + // Remove hacky bit from entry flags + if ( rInfo.pStream->aEntry.nFlag & ( 1 << 4 ) ) + { + rInfo.pStream->aEntry.nFlag &= ~( 1 << 4 ); + rInfo.pStream->aEntry.nMethod = STORED; + } + // TODO/LATER: get rid of this hack ( the encrypted stream size property is changed during saving ) if ( rInfo.pStream->IsEncrypted() ) rInfo.pStream->setSize( nOwnStreamOrigSize );