1
Fork 0
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:
Tim Schumacher 2023-11-11 13:42:49 +01:00 committed by Andreas Kling
parent 270b1176de
commit cb03d3d78f
2 changed files with 47 additions and 8 deletions

View file

@ -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));