From 2e5d741a756cacf21aa0d5d6bf9c0bae27241d61 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Oct 02 2013 10:45:43 +0000 Subject: Resolves: rhbz#1013844 encrypted OOo 1.0 files don't reopen --- diff --git a/0001-Resolves-rhbz-1013844-fdo-47482-encrypted-OOo-1.0-do.patch b/0001-Resolves-rhbz-1013844-fdo-47482-encrypted-OOo-1.0-do.patch new file mode 100644 index 0000000..925ed89 --- /dev/null +++ b/0001-Resolves-rhbz-1013844-fdo-47482-encrypted-OOo-1.0-do.patch @@ -0,0 +1,215 @@ +From 11ad93f4ba84f190c908e92a2c960f7a9fa800c0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +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 +zcmb7I1yq#X)*g@?y1S*3MnXavx)})va42bp7&@h-1tg?XkrY8nkPhiihf=yjDW!h! +zUO&9w)%)MOXYIAlnt7jR-V^)m{cH{88z{s800sb{0hR{I))B>10|0<4zx)aSvx1p9 +zdpMXGJ2=={nHoD=+1v5B+CAcSa7oqF9q3p%$ywnd+#O8@ +zhy|zAj8#Y#-*k=2|6D#Sqcs9iUE;q(7<;$e%fZ>mbXBi}J<$ByK&zyY=pu#g5(P)h +zA(N?&jjO$1;W5k%q-R&jCgK2wYT2r-&3NAScS|m!qB&jAnyNhE2R@+5(O;UA^aq|G +zc5$`O!iAg?&JiTy%*e^E!+u{}n7Q!bO9*q!D5Ton{gQg15uPX@cQZfVGo>I>26 +zys1cM-!BJ~wIv?Ef`X7>Gk9$sD^yaR!ntMrAUR-AsWzvbp8!gQzYfEcLA_CA;nT>0 +zV1!T_Eo=B&x>^Ux78b21Ucxmn4P|tUo(t424W!GRyYfHo0`}#8IGH&+TiIDSUG0R* +ztVF#i{#{h}vco*=We2|lAkUcSjA6W$w&U6?h&}z>JK-H3Rd4(PGIhjW<({XRHcI50A$) +zA5vEzn=-i)2%r)_JPGv=Rff8u26P$Vzk5f-uE +zC}k(|J3xC!F<1CNa5WL`&)42Ny7T2z3csAdw=K)9X7h(d_n2X}44Np90#wTs^|obf +zlGuhoOM@eA8K0qfXDLuLfe5*sXpiTQaHcy2>`N9;dB}9md&=E)64FSW3g}Q{Up^i$ +zTY^P-N=S#g)5~t$?sEUe$^l1uH6Yh +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 +zIF#B5h7?o0Ud0 +zMw8(gP}usEGl>2>`eP;Md6Cew1;5IiG_Tu=nyZsXAp9_WaJI3)Yp%5yD(AaBINCYi +zcgCQIK9o>C^!7O{`ATRGsl|D35EpE8`-24SiEz)vZkDZE@tp;_!riL4HoVNZomj0S +z=H`c6T+~}T2vf`B(4Hzfa>+2>({cg|&v6%V#XOt~BoA3lIM!I|m|T^PlHd)?r~Upy +zH)$=XBSkc9+7|GoC%sJ9ie?@bh*NFL_DQSls;RVUW#$02j>~T^wJ@$rd++gkWX +zNEMvu9xPlbLFa6n0+bH5!<{%9KSlI(i<{uyZHUOMBbGP7V7(K;`TX(S+))%OELAQ8 +zL-GlVlWfiC878E5Iwwp~GlvR2UHYgq>UggHaUy?=5H~u5j^N=3xwnGHVxA5nO9T2~ +z2EC_SktI#f3m!-e@H%?X+AN!-4-IJ?O;e51xW_oii;+=$@z*Sonw>!8V+2Kh6xQ_T +zXk*MAnJm88S3~Y}>t3b@6bk3J`Dr&y_*Bop#JqZINjyA?s2kNsBJPbsKMU72(d`8s}uP!HvHm^17rn?}I-77vcN +z4R>x=mtxDc9Jba9icHhzVYi_On!V7~a4T;*q=E@)s2fJBFH7YV^Sfv07=~3AC!Olf +zAfGHID~271r1v(xkp*GSOG1)e<<@-tp^lT%Ikn#RN?`@WqwV_27z6T-H$WdxR+}o& +zu(G;Vf_kuQ2BleEAKuzItIl_Q0MIaYM*)>+tggv^3D>@bXl#r>_fST=$_t+?we~-u +z0svS3GcRELXzX03g1?O9a-=G&b?=sU2kqK +zQsv$YMDj2xl`N{1eoX{}G)jwnfWpQ1_KY%@!s_Zmuc8kPSgc)MvuR%eH5ZQi^({yp +zkth|n6wEZ)jKYy4G~VChB0B?vj`z;qoHTlUZ#6MxL!|@1ZH=t%4-6>Vj6%ah%|`K~ +zH7VS2MfnWJp91WY*0&tjaZjM#O~yd|OwFM`O$gtsPN`wyOCN(1WM7ftic7r-!+Z^-O +z3bY%;QvpEN^~n@hU4KroZSPs&Tpoo-KkH(xyI7ZYP92RSX$DsUSLbK58*pAYWd0&n +z#RLJQXDXJ>j)p|M7%zb8_z_ASef(bk>UAB>T+$6rH@G7FNp&IYb5|IY@}q8>pBBkUApHIQfeDUptH|0Wmh5N +ziyQLBe7o7}wZtCkIcjONLkI85xA#4gtQ|KTOq}H}bk+Kxfv~6y=7;?Wp&q +zBGnhz-fUUonP=EuV@jZNj!jgC6#-t#BTemDbWIWML3e>o*WN(PzFjMAbu>p}>Mp?B +z)N)~d+KP^6z@K}wf5r2U!Ou?ZPt?z<^Vc5XRX_IHq%Vh;-Q6GE*}tQH +z?LS=g53jBBve)=)H}UVtUj@unf8yG5E-$5Dx)ncxf6_PCz*NkC7XtsLcK&s(uE7An +zmEO6w$={Ius($`k9{kJd`tR!GS2gtC@+ka<=T~*~XPzs4bZvgW;rUm!^k=3k<#TPd +zzhSyoPya2;?r&JG)zp8>!g6_p{=UlB>gpdXKTrCvqUcIrU7NvgSpJ~4exAyoq`zj= +v%NhM*&6lLt>gpQzk9_-UAYbL%Yx_v>hwQ7NjEZ*k7~bV)_wo)%`GNaCYB+jj + +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 + diff --git a/libreoffice.spec b/libreoffice.spec index 5519779..169119d 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -260,6 +260,7 @@ Patch19: 0001-select-sheet-menu-as-a-right-click-popup-to-the-prev.patch Patch20: 0001-Avoid-crash-when-a-comment-contains-data-but-no-text.patch Patch21: 0001-Resolves-rhbz-1013480-crash-in-EditLineList-operator.patch Patch22: 0001-rhbz-1014010-Missing-dependencies-in-isBootstrapType.patch +Patch23: 0001-Resolves-rhbz-1013844-fdo-47482-encrypted-OOo-1.0-do.patch %define instdir %{_libdir} %define baseinstdir %{instdir}/libreoffice @@ -1014,6 +1015,7 @@ mv -f redhat.soc extras/source/palettes/standard.soc %patch20 -p1 -b .Avoid-crash-when-a-comment-contains-data-but-no-text.patch %patch21 -p1 -b .rhbz-1013480-crash-in-EditLineList-operator.patch %patch22 -p1 -b .rhbz-1014010-Missing-dependencies-in-isBootstrapType.patch +%patch23 -p1 -b .rhbz-1013844-fdo-47482-encrypted-OOo-1.0-do.patch # TODO: check this # these are horribly incomplete--empty translations and copied english @@ -2104,9 +2106,10 @@ update-desktop-database %{_datadir}/applications &> /dev/null || : %endif %changelog -* Tue Oct 01 2013 Caolán McNamara - 1:4.1.2.3-2-UNBUILT +* Wed Oct 02 2013 Caolán McNamara - 1:4.1.2.3-2 - Resolves: rhbz#1013480 crash in EditLineList::operator[] - Resolves: rhbz#1014010 crash on start up +- Resolves: rhbz#1013844 encrypted OOo 1.0 files don't reopen * Mon Sep 30 2013 David Tardon - 1:4.1.2.3-1 - 4.1.2 rc3