Skip to content

Commit ce6ec41

Browse files
Merge pull request #238 from johannesvollmer/fix-237-subtraction-overflow-panic
fix unchecked subtraction overflow resulting in panic
2 parents e018e0d + 9732d1d commit ce6ec41

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/compression/piz/huffman.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,9 @@ fn decode_with_tables(
201201

202202
let count = u64::try_from((8 - input_bit_count) & 7)?;
203203
code_bits >>= count;
204-
code_bit_count -= count;
204+
205+
code_bit_count = code_bit_count.checked_sub(count)
206+
.ok_or_else(|| Error::invalid("code"))?;
205207

206208
while code_bit_count > 0 {
207209
let index = (code_bits << (DECODE_BITS - code_bit_count)) & DECODE_MASK;
@@ -294,7 +296,7 @@ fn read_encoding_table(
294296
let mut code_bit_count = 0_u64;
295297

296298
// TODO push() into encoding table instead of index stuff?
297-
let mut encoding_table = vec![0_u64; ENCODING_TABLE_SIZE];
299+
let mut encoding_table = vec![0_u64; ENCODING_TABLE_SIZE];
298300
let mut code_index = min_code_index;
299301
while code_index <= max_code_index {
300302
let code_len = read_bits(6, &mut code_bits, &mut code_bit_count, packed)?;

0 commit comments

Comments
 (0)