You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Stefan Bodewig (JIRA)" <ji...@apache.org> on 2013/12/20 13:38:10 UTC
[jira] [Updated] (COMPRESS-244) 7z reading of UINT64 data type is
wrong for big values
[ https://issues.apache.org/jira/browse/COMPRESS-244?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stefan Bodewig updated COMPRESS-244:
------------------------------------
Labels: 7z easyfix patch (was: easyfix patch)
> 7z reading of UINT64 data type is wrong for big values
> ------------------------------------------------------
>
> Key: COMPRESS-244
> URL: https://issues.apache.org/jira/browse/COMPRESS-244
> Project: Commons Compress
> Issue Type: Bug
> Components: Archivers
> Affects Versions: 1.6
> Reporter: Nico Kruber
> Labels: 7z, easyfix, patch
> Fix For: 1.7
>
> Attachments: fix-readUint64-for-large-values.diff
>
>
> h2. Brief description
> large values with a first byte indicating at least 4 additional bytes shift an integer by at least 32bits thus leading to an overflow and an incorrect value - the value needs to be casted to long before the bitshift!
> (see the attached patch)
> h2. Details from the 7z documentation
> {quote}
> {noformat}
> UINT64 means real UINT64 encoded with the following scheme:
> Size of encoding sequence depends from first byte:
> First_Byte Extra_Bytes Value
> (binary)
> 0xxxxxxx : ( xxxxxxx )
> 10xxxxxx BYTE y[1] : ( xxxxxx << (8 * 1)) + y
> 110xxxxx BYTE y[2] : ( xxxxx << (8 * 2)) + y
> ...
> 1111110x BYTE y[6] : ( x << (8 * 6)) + y
> 11111110 BYTE y[7] : y
> 11111111 BYTE y[8] : y
> {noformat}
> {quote}
--
This message was sent by Atlassian JIRA
(v6.1.4#6159)