mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 11:48:10 +00:00
AK: Allow rejecting BitStream reads beyond EOF
This commit is contained in:
parent
270b1176de
commit
cb03d3d78f
2 changed files with 47 additions and 8 deletions
|
@ -137,10 +137,30 @@ TEST_CASE(bit_reads_beyond_stream_limits)
|
|||
Array<u8, 1> const test_data { 0xFF };
|
||||
|
||||
{
|
||||
// LittleEndianInputBitStream allows reading null bits beyond the original data
|
||||
// for compatibility purposes.
|
||||
auto memory_stream = make<FixedMemoryStream>(test_data);
|
||||
auto bit_stream = make<LittleEndianInputBitStream>(move(memory_stream));
|
||||
auto bit_stream = make<LittleEndianInputBitStream>(move(memory_stream), LittleEndianInputBitStream::UnsatisfiableReadBehavior::Reject);
|
||||
|
||||
{
|
||||
auto result = TRY_OR_FAIL(bit_stream->read_bits<u8>(6));
|
||||
EXPECT_EQ(result, 0b111111);
|
||||
}
|
||||
|
||||
{
|
||||
auto result = bit_stream->read_bits<u8>(6);
|
||||
EXPECT(result.is_error());
|
||||
}
|
||||
|
||||
{
|
||||
auto result = bit_stream->read_bits<u8>(6);
|
||||
EXPECT(result.is_error());
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
// LittleEndianInputBitStream allows reading null bits beyond the original data
|
||||
// for compatibility purposes if enabled.
|
||||
auto memory_stream = make<FixedMemoryStream>(test_data);
|
||||
auto bit_stream = make<LittleEndianInputBitStream>(move(memory_stream), LittleEndianInputBitStream::UnsatisfiableReadBehavior::FillWithZero);
|
||||
|
||||
{
|
||||
auto result = TRY_OR_FAIL(bit_stream->read_bits<u8>(6));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue