mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 08:34:07 +02:00
fix Utf8Error::length going out of bounds of sub-buffers
This commit is contained in:
parent
9a4b300875
commit
8066984763
1 changed files with 14 additions and 10 deletions
|
|
@ -304,13 +304,17 @@ where
|
|||
pub fn read_string(&mut self, byte_len: Option<usize>) -> Result<Cow<'a, str>> {
|
||||
let max_length = self.bits_left() / 8;
|
||||
|
||||
let result = self.buffer.read_string(self.pos, byte_len).map_err(|err| {
|
||||
let result = self
|
||||
.buffer
|
||||
.read_string(self.pos, byte_len)
|
||||
.map_err(|mut err| {
|
||||
// still advance the stream on malformed utf8
|
||||
if let BitError::Utf8Error(_, len) = &err {
|
||||
if let BitError::Utf8Error(_, len) = &mut err {
|
||||
self.pos += match byte_len {
|
||||
Some(len) => len * 8,
|
||||
None => min((len + 1) * 8, max_length * 8),
|
||||
None => min((*len + 1) * 8, max_length * 8),
|
||||
};
|
||||
*len = (*len).min(max_length);
|
||||
}
|
||||
err
|
||||
})?;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue