Fix: check decode buffer end after the run opcode
This commit is contained in:
parent
4067d83829
commit
0d612fd3c2
2 changed files with 6 additions and 5 deletions
|
@ -58,15 +58,12 @@ where
|
|||
let mut run = 0_u16;
|
||||
|
||||
for px_out in pixels.iter_mut() {
|
||||
if unlikely(!buf.within_bounds()) {
|
||||
break;
|
||||
}
|
||||
|
||||
// TODO: check for safety that ReadBuf is not over yet
|
||||
if run != 0 {
|
||||
run -= 1;
|
||||
*px_out = px;
|
||||
continue;
|
||||
} else if unlikely(!buf.within_bounds()) {
|
||||
return Err(Error::UnexpectedBufferEnd);
|
||||
}
|
||||
|
||||
let b1 = buf.read();
|
||||
|
|
|
@ -12,6 +12,7 @@ pub enum Error {
|
|||
InputBufferTooSmall { size: usize, required: usize },
|
||||
OutputBufferTooSmall { size: usize, required: usize },
|
||||
InvalidMagic { magic: u32 },
|
||||
UnexpectedBufferEnd,
|
||||
// TODO: invalid colorspace
|
||||
}
|
||||
|
||||
|
@ -38,6 +39,9 @@ impl Display for Error {
|
|||
Self::InvalidMagic { magic } => {
|
||||
write!(f, "invalid magic: expected {:?}, got {:?}", QOI_MAGIC, magic)
|
||||
}
|
||||
Self::UnexpectedBufferEnd => {
|
||||
write!(f, "unexpected input buffer end while decoding")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue