From a091ccb217b7374efb2630d7f063db6a83fbac33 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 1 May 2025 19:20:51 -0700 Subject: [PATCH] std.compress.zstd.Decompress: cap input buffer required size --- lib/std/compress/zstd/Decompress.zig | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/std/compress/zstd/Decompress.zig b/lib/std/compress/zstd/Decompress.zig index 16a5db4bfc..84eb731b63 100644 --- a/lib/std/compress/zstd/Decompress.zig +++ b/lib/std/compress/zstd/Decompress.zig @@ -578,8 +578,10 @@ pub const Frame = struct { @field(self, field_name).table = .{ .rle = try in.takeByte() }; }, .fse => { - if (in.buffer.len < @intFromEnum(remaining.*)) return error.InputBufferUndersize; - const limited_buffer = try in.peek(@intFromEnum(remaining.*)); + const max_table_size = 2048; + const peek_len: usize = remaining.minInt(max_table_size); + if (in.buffer.len < peek_len) return error.InputBufferUndersize; + const limited_buffer = try in.peek(peek_len); var bit_reader: BitReader = .{ .bytes = limited_buffer }; const table_size = try Table.decode( &bit_reader,