| ... | @@ -578,8 +578,10 @@ pub const Frame = struct { | ... | @@ -578,8 +578,10 @@ pub const Frame = struct { |
| 578 | @field(self, field_name).table = .{ .rle = try in.takeByte() }; | 578 | @field(self, field_name).table = .{ .rle = try in.takeByte() }; |
| 579 | }, | 579 | }, |
| 580 | .fse => { | 580 | .fse => { |
| 581 | if (in.buffer.len < @intFromEnum(remaining.*)) return error.InputBufferUndersize; | 581 | const max_table_size = 2048; |
| 582 | const limited_buffer = try in.peek(@intFromEnum(remaining.*)); | 582 | const peek_len: usize = remaining.minInt(max_table_size); |
| | 583 | if (in.buffer.len < peek_len) return error.InputBufferUndersize; |
| | 584 | const limited_buffer = try in.peek(peek_len); |
| 583 | var bit_reader: BitReader = .{ .bytes = limited_buffer }; | 585 | var bit_reader: BitReader = .{ .bytes = limited_buffer }; |
| 584 | const table_size = try Table.decode( | 586 | const table_size = try Table.decode( |
| 585 | &bit_reader, | 587 | &bit_reader, |