diff options
author | Kostya Shishkov <kostya.shishkov@gmail.com> | 2020-04-26 14:14:31 +0200 |
---|---|---|
committer | Kostya Shishkov <kostya.shishkov@gmail.com> | 2020-04-26 14:14:31 +0200 |
commit | 0bbe433e917f4253df8536bf5e583b07f71bf6c0 (patch) | |
tree | 8bb95d66d8174b630b0649b9267392b07e007845 /nihav-core/src | |
parent | fcc25d82096224ba0ba4c8b800038234fbeb82a9 (diff) | |
download | nihav-0bbe433e917f4253df8536bf5e583b07f71bf6c0.tar.gz |
core/io: fix reading escape bits past end in codebook
Diffstat (limited to 'nihav-core/src')
-rw-r--r-- | nihav-core/src/io/codebook.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/nihav-core/src/io/codebook.rs b/nihav-core/src/io/codebook.rs index 553f2f9..d835ce3 100644 --- a/nihav-core/src/io/codebook.rs +++ b/nihav-core/src/io/codebook.rs @@ -370,10 +370,10 @@ impl<'a, S: Copy> CodebookReader<S> for BitReader<'a> { let bits = cb.table[lut_idx] & 0x7F; esc = (cb.table[lut_idx] & 0x80) != 0; idx = (cb.table[lut_idx] >> 8) as usize; - if (bits as isize) > self.left() { + let skip_bits = if esc { u32::from(lut_bits) } else { bits }; + if (skip_bits as isize) > self.left() { return Err(CodebookError::InvalidCode); } - let skip_bits = if esc { u32::from(lut_bits) } else { bits }; self.skip(skip_bits as u32).unwrap(); lut_bits = bits as u8; } |