parent
f9604cdcc6
commit
2e5d741a75
@ -0,0 +1,215 @@
|
||||
From 11ad93f4ba84f190c908e92a2c960f7a9fa800c0 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Wed, 2 Oct 2013 11:38:22 +0100
|
||||
Subject: [PATCH] Resolves: rhbz#1013844 fdo#47482 encrypted OOo 1.0 docs
|
||||
cannot be reopened
|
||||
|
||||
Workaround for the encrypted OpenOffice.org 1.0 documents generated by
|
||||
Libreoffice <= 3.6 with the new encryption format and using SHA256, but missing
|
||||
a specified startkey of SHA256
|
||||
|
||||
Change-Id: Ib1acc4441b5adc6721cb3cde7a1191aa978e9a1b
|
||||
---
|
||||
package/source/zippackage/ZipPackageStream.cxx | 34 +++++++++++++++++++++----
|
||||
sc/qa/unit/data/ods/passwordWrongSHA.ods | Bin 0 -> 6560 bytes
|
||||
sc/qa/unit/subsequent_filters-test.cxx | 10 ++++++++
|
||||
3 files changed, 39 insertions(+), 5 deletions(-)
|
||||
create mode 100644 sc/qa/unit/data/ods/passwordWrongSHA.ods
|
||||
|
||||
diff --git a/package/source/zippackage/ZipPackageStream.cxx b/package/source/zippackage/ZipPackageStream.cxx
|
||||
index 78e647e..bb96203 100644
|
||||
--- a/package/source/zippackage/ZipPackageStream.cxx
|
||||
+++ b/package/source/zippackage/ZipPackageStream.cxx
|
||||
@@ -535,13 +535,37 @@ uno::Reference< io::XInputStream > SAL_CALL ZipPackageStream::getDataStream()
|
||||
{
|
||||
xResult = rZipPackage.getZipFile().getDataStream( aEntry, GetEncryptionData(), bIsEncrypted, rZipPackage.GetSharedMutexRef() );
|
||||
}
|
||||
- catch( packages::WrongPasswordException& )
|
||||
+ catch( const packages::WrongPasswordException& )
|
||||
{
|
||||
- // workaround for the encrypted documents generated with the old OOo1.x bug.
|
||||
- if ( rZipPackage.GetStartKeyGenID() == xml::crypto::DigestID::SHA1 && !m_bUseWinEncoding )
|
||||
+ if ( rZipPackage.GetStartKeyGenID() == xml::crypto::DigestID::SHA1 )
|
||||
{
|
||||
- xResult = rZipPackage.getZipFile().getDataStream( aEntry, GetEncryptionData( true ), bIsEncrypted, rZipPackage.GetSharedMutexRef() );
|
||||
- m_bUseWinEncoding = true;
|
||||
+ try
|
||||
+ {
|
||||
+ // rhbz#1013844 / fdo#47482 workaround for the encrypted
|
||||
+ // OpenOffice.org 1.0 documents generated by Libreoffice <=
|
||||
+ // 3.6 with the new encryption format and using SHA256, but
|
||||
+ // missing a specified startkey of SHA256
|
||||
+
|
||||
+ // force SHA256 and see if that works
|
||||
+ m_nImportedStartKeyAlgorithm = xml::crypto::DigestID::SHA256;
|
||||
+ xResult = rZipPackage.getZipFile().getDataStream( aEntry, GetEncryptionData(), bIsEncrypted, rZipPackage.GetSharedMutexRef() );
|
||||
+ return xResult;
|
||||
+ }
|
||||
+ catch (const packages::WrongPasswordException&)
|
||||
+ {
|
||||
+ // if that didn't work, restore to SHA1 and trundle through the *other* earlier
|
||||
+ // bug fix
|
||||
+ m_nImportedStartKeyAlgorithm = xml::crypto::DigestID::SHA1;
|
||||
+ }
|
||||
+
|
||||
+ // workaround for the encrypted documents generated with the old OOo1.x bug.
|
||||
+ if ( !m_bUseWinEncoding )
|
||||
+ {
|
||||
+ xResult = rZipPackage.getZipFile().getDataStream( aEntry, GetEncryptionData( true ), bIsEncrypted, rZipPackage.GetSharedMutexRef() );
|
||||
+ m_bUseWinEncoding = true;
|
||||
+ }
|
||||
+ else
|
||||
+ throw;
|
||||
}
|
||||
else
|
||||
throw;
|
||||
diff --git a/sc/qa/unit/data/ods/passwordWrongSHA.ods b/sc/qa/unit/data/ods/passwordWrongSHA.ods
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..b8a0e80dc675dca66bd895061fb8ec7da2520905
|
||||
GIT binary patch
|
||||
literal 6560
|
||||
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
|
||||
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
||||
diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx
|
||||
index 7db8c16..34e9cd3 100644
|
||||
--- a/sc/qa/unit/subsequent_filters-test.cxx
|
||||
+++ b/sc/qa/unit/subsequent_filters-test.cxx
|
||||
@@ -125,6 +125,7 @@ public:
|
||||
//misc tests unrelated to the import filters
|
||||
void testPasswordNew();
|
||||
void testPasswordOld();
|
||||
+ void testPasswordWrongSHA();
|
||||
|
||||
//test shape import
|
||||
void testControlImport();
|
||||
@@ -198,6 +199,7 @@ public:
|
||||
//disable testPassword on MacOSX due to problems with libsqlite3
|
||||
//also crashes on DragonFly due to problems with nss/nspr headers
|
||||
#if !defined(MACOSX) && !defined(DRAGONFLY) && !defined(WNT)
|
||||
+ CPPUNIT_TEST(testPasswordWrongSHA);
|
||||
CPPUNIT_TEST(testPasswordOld);
|
||||
CPPUNIT_TEST(testPasswordNew);
|
||||
#endif
|
||||
@@ -1326,6 +1328,14 @@ void ScFiltersTest::testPasswordOld()
|
||||
testPassword_Impl(aFileNameBase);
|
||||
}
|
||||
|
||||
+void ScFiltersTest::testPasswordWrongSHA()
|
||||
+{
|
||||
+ //tests opening a file wrongly using the new password algorithm
|
||||
+ //in a sxc with the key algorithm missing
|
||||
+ const OUString aFileNameBase("passwordWrongSHA.");
|
||||
+ testPassword_Impl(aFileNameBase);
|
||||
+}
|
||||
+
|
||||
void ScFiltersTest::testControlImport()
|
||||
{
|
||||
ScDocShellRef xDocSh = loadDoc("singlecontrol.", XLSX);
|
||||
--
|
||||
1.8.3.1
|
||||
|
Loading…
Reference in new issue