mirror of
https://github.com/girlbossceo/conduwuit.git
synced 2025-03-14 18:55:37 +00:00
propagate underflow as error result, not index bounds panic
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
186c459584
commit
9ad4f20da4
1 changed files with 8 additions and 4 deletions
|
@ -298,9 +298,11 @@ impl<'a, 'de: 'a> de::Deserializer<'de> for &'a mut Deserializer<'de> {
|
|||
fn deserialize_i64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value> {
|
||||
const BYTES: usize = size_of::<i64>();
|
||||
|
||||
let end = self.pos.saturating_add(BYTES);
|
||||
let end = self.pos.saturating_add(BYTES).min(self.buf.len());
|
||||
let bytes: ArrayVec<u8, BYTES> = self.buf[self.pos..end].try_into()?;
|
||||
let bytes = bytes.into_inner().expect("array size matches i64");
|
||||
let bytes = bytes
|
||||
.into_inner()
|
||||
.map_err(|_| Self::Error::SerdeDe("i64 buffer underflow".into()))?;
|
||||
|
||||
self.inc_pos(BYTES);
|
||||
visitor.visit_i64(i64::from_be_bytes(bytes))
|
||||
|
@ -328,9 +330,11 @@ impl<'a, 'de: 'a> de::Deserializer<'de> for &'a mut Deserializer<'de> {
|
|||
fn deserialize_u64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value> {
|
||||
const BYTES: usize = size_of::<u64>();
|
||||
|
||||
let end = self.pos.saturating_add(BYTES);
|
||||
let end = self.pos.saturating_add(BYTES).min(self.buf.len());
|
||||
let bytes: ArrayVec<u8, BYTES> = self.buf[self.pos..end].try_into()?;
|
||||
let bytes = bytes.into_inner().expect("array size matches u64");
|
||||
let bytes = bytes
|
||||
.into_inner()
|
||||
.map_err(|_| Self::Error::SerdeDe("u64 buffer underflow".into()))?;
|
||||
|
||||
self.inc_pos(BYTES);
|
||||
visitor.visit_u64(u64::from_be_bytes(bytes))
|
||||
|
|
Loading…
Add table
Reference in a new issue