codebook: reject invalid codes
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 8 Dec 2018 14:21:22 +0000 (15:21 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 8 Dec 2018 14:21:22 +0000 (15:21 +0100)
src/io/codebook.rs

index 5bfd71991e186cfe7c855d2ce11411e1d27d8a59..3d1e8d0e0112e2d2032788e6723bfb17f06014a0 100644 (file)
@@ -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);