diff options
author | Istvan Ruzman <istvan@ruzman.eu> | 2019-12-17 12:23:06 +0100 |
---|---|---|
committer | Istvan Ruzman <istvan@ruzman.eu> | 2019-12-17 12:23:06 +0100 |
commit | 09e5061aa36544056d18aab5b2d5af8ada755ffb (patch) | |
tree | fb4c168be087b2284d2a86e2161ff2223612a3cc | |
parent | edd24ef3d633856c92f76acc8808df937ab7aeee (diff) |
Fix: Check for mandatory Service Name Tag
-rw-r--r-- | src/header.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/header.rs b/src/header.rs index 4114acb..721d2c0 100644 --- a/src/header.rs +++ b/src/header.rs @@ -59,6 +59,8 @@ impl<'a> Header<'a> { actual_packet_length: buffer.len() as u16, payload_length: length as u16, }); + } else if length == 0 { + return Err(ParseError::MissingServiceName); } Self::validate_tags(&mut buffer[6..6 + length])?; @@ -144,7 +146,10 @@ impl<'a> Header<'a> { if length != 0 || payload.len() != 4 { return Err(ParseError::DataBehindEolTag); } - return Ok(()); + + if !service_name { return Err(ParseError::MissingServiceName); } + + Ok(()) } pub fn code(&self) -> u8 { |