[
https://issues.apache.org/jira/browse/COMPRESS-244?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nico Kruber updated COMPRESS-244:
---------------------------------
Attachment: fix-readUint64-for-large-values.diff
patch for readUint64 in SevenZFile.java
> 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: easyfix, patch
> 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#6144)