bb11601 - check array boundaries in unrarvm rarvm_getbits().

pull/60/head
Steven Morgan 9 years ago
parent 64f9b9b5dd
commit da520c34b0
  1. 3
      libclamunrar/unrarvm.c

@ -215,6 +215,7 @@ unsigned int rarvm_getbits(rarvm_input_t *rarvm_input)
{ {
unsigned int bit_field; unsigned int bit_field;
if (rarvm_input->in_addr+2 < rarvm_input->buf_size) {
bit_field = (unsigned int) rarvm_input->in_buf[rarvm_input->in_addr] << 16; bit_field = (unsigned int) rarvm_input->in_buf[rarvm_input->in_addr] << 16;
bit_field |= (unsigned int) rarvm_input->in_buf[rarvm_input->in_addr+1] << 8; bit_field |= (unsigned int) rarvm_input->in_buf[rarvm_input->in_addr+1] << 8;
bit_field |= (unsigned int) rarvm_input->in_buf[rarvm_input->in_addr+2]; bit_field |= (unsigned int) rarvm_input->in_buf[rarvm_input->in_addr+2];
@ -222,6 +223,8 @@ unsigned int rarvm_getbits(rarvm_input_t *rarvm_input)
return (bit_field & 0xffff); return (bit_field & 0xffff);
} }
return 0;
}
unsigned int rarvm_read_data(rarvm_input_t *rarvm_input) unsigned int rarvm_read_data(rarvm_input_t *rarvm_input)
{ {

Loading…
Cancel
Save