aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2018-12-08 15:21:22 +0100
committerKostya Shishkov <kostya.shishkov@gmail.com>2018-12-08 15:21:22 +0100
commit26488721a0cdb26c33f4e35f177c40fb81984346 (patch)
tree244f368f52dd5f443538cd48b72e2a4a047079c6
parent43c8b55e9b586d6814b0588516eadf9bd12c9685 (diff)
downloadnihav-26488721a0cdb26c33f4e35f177c40fb81984346.tar.gz
codebook: reject invalid codes
-rw-r--r--src/io/codebook.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/io/codebook.rs b/src/io/codebook.rs
index 5bfd719..3d1e8d0 100644
--- a/src/io/codebook.rs
+++ b/src/io/codebook.rs
@@ -195,7 +195,12 @@ impl<S: Copy> Codebook<S> {
let mut symidx: usize = 0;
for i in 0..cb.len() {
let bits = cb.bits(i);
- if bits > 0 { nnz = nnz + 1; }
+ if bits > 0 {
+ nnz = nnz + 1;
+ if cb.code(i) >= (1 << bits) {
+ return Err(CodebookError::InvalidCodebook);
+ }
+ }
maxbits = max(bits, maxbits);
if bits > MAX_LUT_BITS {
let code = cb.code(i);