Ensure BitVec is initialized using a multiple of 8

I found it was panic-ing when supplied a non-power-of-zero len.
This commit is contained in:
Paul Hauner 2019-03-30 17:13:23 +11:00
parent 7b3f317abf
commit dbcc88ad67
No known key found for this signature in database
GPG Key ID: D362883A9218FCC6
2 changed files with 8 additions and 3 deletions

View File

@ -692,7 +692,10 @@ where
},
};
trace!("BeaconChain::produce_block: updating state for new block.",);
debug!(
"Produced block with {} attestations, updating state.",
block.body.attestations.len()
);
per_block_processing_without_verifying_block_signature(&mut state, &block, &self.spec)?;

View File

@ -33,9 +33,11 @@ impl BooleanBitfield {
}
/// Create a new bitfield with the given length `initial_len` and all values set to `bit`.
pub fn from_elem(inital_len: usize, bit: bool) -> Self {
pub fn from_elem(initial_len: usize, bit: bool) -> Self {
// BitVec can panic if we don't set the len to be a multiple of 8.
let len = ((initial_len + 7) / 8) * 8;
Self {
0: BitVec::from_elem(inital_len, bit),
0: BitVec::from_elem(len, bit),
}
}