Skip to content

Commit

Permalink
Use byte crate try_* functions to avoid implicit panics
Browse files Browse the repository at this point in the history
  • Loading branch information
morr0ne committed Feb 11, 2025
1 parent 66e1ec9 commit 753d213
Showing 1 changed file with 13 additions and 20 deletions.
33 changes: 13 additions & 20 deletions src/wire/message.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,19 +49,16 @@ impl Message {
}

pub fn from_bytes(bytes: &mut BytesMut, fds: &mut [RawFd]) -> Result<Self, DecodeError> {
if bytes.remaining() < 8 {
return Err(DecodeError::MalformedHeader);
}

let object_id = bytes.get_u32_ne();
let object_id = bytes
.try_get_u32_ne()
.map_err(|_| DecodeError::MalformedHeader)?;

if object_id == 0 {
return Err(DecodeError::MalformedHeader);
}
let object_id = ObjectId::new(object_id).ok_or(DecodeError::MalformedHeader)?;

let object_id = unsafe { ObjectId::from_raw(object_id) };
let second = bytes
.try_get_u32_ne()
.map_err(|_| DecodeError::MalformedHeader)?;

let second = bytes.get_u32_ne();
let len = (second >> 16) as usize;
let opcode = (second & 65535) as u16;

Expand All @@ -84,19 +81,15 @@ impl Message {
}

pub fn int(&mut self) -> Result<i32, DecodeError> {
if self.payload.remaining() < 4 {
return Err(DecodeError::MalformedPayload);
}

Ok(self.payload.get_i32_ne())
self.payload
.try_get_i32_ne()
.map_err(|_| DecodeError::MalformedPayload)
}

pub fn uint(&mut self) -> Result<u32, DecodeError> {
if self.payload.remaining() < 4 {
return Err(DecodeError::MalformedPayload);
}

Ok(self.payload.get_u32_ne())
self.payload
.try_get_u32_ne()
.map_err(|_| DecodeError::MalformedPayload)
}

pub fn fixed(&mut self) -> Result<Fixed, DecodeError> {
Expand Down

0 comments on commit 753d213

Please sign in to comment.