QPACK: fix a prefi_int bug when integer encoding has a perfect fit

This commit is contained in:
stammw
2019-01-31 19:58:03 +01:00
committed by Dirkjan Ochtman
parent 9dc05fe5d8
commit bdb3f557ac
2 changed files with 9 additions and 2 deletions
+6 -1
View File
@@ -58,7 +58,7 @@ pub fn encode<B: BufMut>(size: u8, flags: u8, value: usize, buf: &mut B) {
buf.write(mask | flags);
let mut remaining = value - mask as usize;
while remaining > 128 {
while remaining >= 128 {
let rest = (remaining % 128) as u8;
buf.write(rest + 128);
remaining /= 128;
@@ -138,4 +138,9 @@ mod test {
let mut read = Cursor::new(&buf);
assert!(super::decode(8, &mut read).is_err());
}
#[test]
fn number_never_ends_with_0x80() {
check_codec(4, 0b0001, 143, &[31, 128, 1]);
}
}
+3 -1
View File
@@ -56,7 +56,9 @@ impl HuffmanEncoder {
self.buffer.reserve(((7 * end_range.byte) / 4) as usize);
}
while self.buffer.len() <= end_range.byte as usize {
let forward =
end_range.byte as usize - self.buffer.len() + if end_range.bit > 0 { 1 } else { 0 };
for _ in 0..forward {
// push filler value that will ends huffman decoding if not
// modified
self.buffer.push(255);