https://issues.apache.org/ooo/show_bug.cgi?id=120385

Andre <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #14 from Andre <[email protected]> ---
This is a 64bit-only bug.

A recent change in ManifestImport::startElement modified the reading of
manifest properties for digest and encryption type in such a way, that they
where internally stored as C++ long values (wrapped in uno Anys).  In the UNO
API they are defined as IDL long values.  IDL long is defined to be always be a
signed 32 bit value.  For 32bit compilers (at least the ones we use for
OpenOffice) the two longs (C++ vs IDL) have the same length.  For 64bit
compilers C++ long has 64bits.
This leads to a problem when the values are later converted back into C++
variables, this time of type sal_Int32.  The conversion fails silently and the
default values (0 in this case) are used.  Zero is neither a valid encryption
nor digest type.  Therefore validation of the password fails.

The fix is simple.  Use type sal_Int32 to store the encryption and digest type
and everything works as before.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to