Specify offset 0 as invalid
This commit is contained in:
@@ -0,0 +1,14 @@
|
|||||||
|
Decompressor Accepted Invalid Data
|
||||||
|
==================================
|
||||||
|
|
||||||
|
This document describes the behavior of the reference decompressor in cases
|
||||||
|
where it accepts an invalid frame instead of reporting an error.
|
||||||
|
|
||||||
|
Zero offsets converted to 1
|
||||||
|
---------------------------
|
||||||
|
If a sequence is decoded with `literals_length = 0` and `offset_value = 3`
|
||||||
|
while `Repeated_Offset_1 = 1`, the computed offset will be `0`, which is
|
||||||
|
invalid.
|
||||||
|
|
||||||
|
The reference decompressor will process this case as if the computed
|
||||||
|
offset was `1`, including inserting `1` into the repeated offset list.
|
||||||
@@ -929,7 +929,10 @@ There is an exception though, when current sequence's `literals_length = 0`.
|
|||||||
In this case, repeated offsets are shifted by one,
|
In this case, repeated offsets are shifted by one,
|
||||||
so an `offset_value` of 1 means `Repeated_Offset2`,
|
so an `offset_value` of 1 means `Repeated_Offset2`,
|
||||||
an `offset_value` of 2 means `Repeated_Offset3`,
|
an `offset_value` of 2 means `Repeated_Offset3`,
|
||||||
and an `offset_value` of 3 means `Repeated_Offset1 - 1_byte`.
|
and an `offset_value` of 3 means `Repeated_Offset1 - 1`.
|
||||||
|
|
||||||
|
In the final case, if `Repeated_Offset1 - 1` evaluates to 0, then the
|
||||||
|
data is considered corrupted.
|
||||||
|
|
||||||
For the first block, the starting offset history is populated with following values :
|
For the first block, the starting offset history is populated with following values :
|
||||||
`Repeated_Offset1`=1, `Repeated_Offset2`=4, `Repeated_Offset3`=8,
|
`Repeated_Offset1`=1, `Repeated_Offset2`=4, `Repeated_Offset3`=8,
|
||||||
|
|||||||
Reference in New Issue
Block a user