diff options
| author | dweiller <4678790+dweiller@users.noreplay.github.com> | 2023-02-04 11:39:48 +1100 |
|---|---|---|
| committer | dweiller <4678790+dweiller@users.noreplay.github.com> | 2023-02-20 09:09:06 +1100 |
| commit | a625df463648b7f6ff2d15de8be5e168c8bc7363 (patch) | |
| tree | 6cb5aed7fe9695b0431f1cedfbd7ae67eebe99b4 /lib/std | |
| parent | 1c509f483aef8b826f02ffc7ab8d1f2cfcec0d36 (diff) | |
| download | zig-a625df463648b7f6ff2d15de8be5e168c8bc7363.tar.gz zig-a625df463648b7f6ff2d15de8be5e168c8bc7363.zip | |
std.compress.zstandard: fix fse decoding crash
Diffstat (limited to 'lib/std')
| -rw-r--r-- | lib/std/compress/zstandard/decode/fse.zig | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/std/compress/zstandard/decode/fse.zig b/lib/std/compress/zstandard/decode/fse.zig index 5f87c1f81b..726891873c 100644 --- a/lib/std/compress/zstandard/decode/fse.zig +++ b/lib/std/compress/zstandard/decode/fse.zig @@ -46,6 +46,7 @@ pub fn decodeFseTable( if (value == 1) { while (true) { const repeat_flag = try bit_reader.readBitsNoEof(u2, 2); + if (repeat_flag + value_count > 256) return error.MalformedFseTable; var i: usize = 0; while (i < repeat_flag) : (i += 1) { values[value_count] = 1; @@ -54,6 +55,7 @@ pub fn decodeFseTable( if (repeat_flag < 3) break; } } + if (value_count == 256) break; } bit_reader.alignToByte(); |
