You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Drew Foulks (Jira)" <ji...@apache.org> on 2021/08/10 13:17:00 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 ]
Drew Foulks updated COMPRESS-244:
---------------------------------
Reporter: Nico Kruber (was: Nico Kruber)
> 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
> Priority: Major
> 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
(v8.3.4#803005)