mirror of
https://github.com/ziglang/zig.git
synced 2026-01-21 06:45:24 +00:00
zstd: Protect against index out-of-bounds when decoding sequences
Previously, index out-of-bounds could occur when copying match_length bytes while decoding whatever sequence happened to overflow `dest`. Now, each sequence checks that there is enough room for the full sequence_length (literal_length + match_length) before doing any copying. Fixes the failing inputs found here: https://github.com/ziglang/zig/issues/24817#issuecomment-3192927715
This commit is contained in:
parent
ee85c8b6d0
commit
98547713a3
@ -765,6 +765,9 @@ pub const Frame = struct {
|
||||
const match_length: usize = sequence.match_length;
|
||||
const sequence_length = literal_length + match_length;
|
||||
|
||||
if (sequence_length > dest[write_pos..].len)
|
||||
return error.MalformedSequence;
|
||||
|
||||
const copy_start = std.math.sub(usize, write_pos + sequence.literal_length, sequence.offset) catch
|
||||
return error.MalformedSequence;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user