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.
This commit is contained in:
@@ -657,16 +657,16 @@ bool ZipPackageFolder::saveChild( const ::rtl::OUString &rShortName, const Conte
|
|||||||
rInfo.pStream->SetToBeEncrypted( sal_True );
|
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...
|
// Then copy it back afterwards...
|
||||||
ZipPackageFolder::copyZipEntry ( rInfo.pStream->aEntry, *pTempEntry );
|
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 )
|
// TODO/LATER: get rid of this hack ( the encrypted stream size property is changed during saving )
|
||||||
if ( rInfo.pStream->IsEncrypted() )
|
if ( rInfo.pStream->IsEncrypted() )
|
||||||
rInfo.pStream->setSize( nOwnStreamOrigSize );
|
rInfo.pStream->setSize( nOwnStreamOrigSize );
|
||||||
|
Reference in New Issue
Block a user