[Libreoffice-commits] core.git: oox/source

Caolán McNamara caolanm at redhat.com
Wed Jan 1 04:20:45 PST 2014


 oox/source/crypto/DocumentDecryption.cxx |   17 +++++++++++++++--
 oox/source/crypto/Standard2007Engine.cxx |    2 +-
 2 files changed, 16 insertions(+), 3 deletions(-)

New commits:
commit 982db648c4fb7b72ab2797ba2cca00e10ddf055d
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Jan 1 12:05:33 2014 +0000

    workaround rather maddening endian-specific template bustage
    
    Change-Id: I69dc97c93ef5efe8d71074ac3eca06a3bbc45253

diff --git a/oox/source/crypto/DocumentDecryption.cxx b/oox/source/crypto/DocumentDecryption.cxx
index 6dee4de..c3549b2 100644
--- a/oox/source/crypto/DocumentDecryption.cxx
+++ b/oox/source/crypto/DocumentDecryption.cxx
@@ -287,9 +287,22 @@ bool DocumentDecryption::readStandard2007EncryptionInfo(BinaryInputStream& rStre
     if( (nHeaderSize < actualHeaderSize) )
         return false;
 
-    rStream >> info.header;
+    rStream >> info.header.flags;
+    rStream >> info.header.sizeExtra;
+    rStream >> info.header.algId;
+    rStream >> info.header.algIdHash;
+    rStream >> info.header.keyBits;
+    rStream >> info.header.providedType;
+    rStream >> info.header.reserved1;
+    rStream >> info.header.reserved2;
+
     rStream.skip( nHeaderSize - actualHeaderSize );
-    rStream >> info.verifier;
+
+    rStream >> info.verifier.saltSize;
+    rStream.readArray(info.verifier.salt, SAL_N_ELEMENTS(info.verifier.salt));
+    rStream.readArray(info.verifier.encryptedVerifier, SAL_N_ELEMENTS(info.verifier.encryptedVerifier));
+    rStream >> info.verifier.encryptedVerifierHashSize;
+    rStream.readArray(info.verifier.encryptedVerifierHash, SAL_N_ELEMENTS(info.verifier.encryptedVerifierHash));
 
     if( info.verifier.saltSize != 16 )
         return false;
diff --git a/oox/source/crypto/Standard2007Engine.cxx b/oox/source/crypto/Standard2007Engine.cxx
index b437846..13697d2 100644
--- a/oox/source/crypto/Standard2007Engine.cxx
+++ b/oox/source/crypto/Standard2007Engine.cxx
@@ -129,7 +129,7 @@ bool Standard2007Engine::calculateEncryptionKey(const OUString& rPassword)
     // data = iterator (4bytes) + hash
     vector<sal_uInt8> data(RTL_DIGEST_LENGTH_SHA1 + 4, 0);
 
-    for (int i = 0; i < 50000; i++)
+    for (sal_Int32 i = 0; i < 50000; ++i)
     {
         ByteOrderConverter::writeLittleEndian( &data[0], i );
         std::copy(hash.begin(), hash.end(), data.begin() + 4);


More information about the Libreoffice-commits mailing list