Details
Description
Similar to KUDU-2049, the binary prefix block encoder has a bug when seeking past the end of the block (i.e to the offset past the last element). The bug only causes issues in very specific circumstances:
- the number of elements in the block has to be a multiple of 16 (the "restart interval")
- this causes the code to interpret the "restart count" at the end of the block data as an offset instead of part of the footer.
- this value, when interpreted as an offset, points to a piece of data in the block which, when interpreted as a varint, ends up large enough to point past the end of the block.
This results in an error like:
F0730 09:56:07.291882 124055 binary_prefix_block.cc:325] Check failed: _s.ok() Bad status: Corruption: Could not decode value length data at idx 32