diff --git a/src/version1.rs b/src/version1.rs index 19fc38b..c85b1ee 100644 --- a/src/version1.rs +++ b/src/version1.rs @@ -175,6 +175,8 @@ pub(crate) fn parse(buf: &mut impl Buf) -> Result= 1, UnexpectedEof); ensure!(buf.get_u8() == LF, IllegalHeaderEnding); let addresses = match (source, destination) { diff --git a/src/version2.rs b/src/version2.rs index 6148e62..b1ca63f 100644 --- a/src/version2.rs +++ b/src/version2.rs @@ -142,7 +142,7 @@ pub(crate) fn parse(buf: &mut impl Buf) -> Result= 108 * 2, UnexpectedEof); + ensure!(buf.remaining() >= length, UnexpectedEof); let mut source = [0u8; 108]; let mut destination = [0u8; 108]; buf.copy_to_slice(&mut source[..]); @@ -177,7 +177,7 @@ pub(crate) fn parse(buf: &mut impl Buf) -> Result= port_length + address_length, + buf.remaining() >= length, UnexpectedEof, );