aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIstvan Ruzman <istvan@ruzman.eu>2019-12-17 13:17:13 +0100
committerIstvan Ruzman <istvan@ruzman.eu>2019-12-17 13:17:13 +0100
commit50f0d22c421f048072dbcddd4d19ca7c20c08e60 (patch)
treeb61f1ff493e3aeaca53d062ca755bc83596d7b11
parent78abcaebb227d08befa67452e4b6f193b55216e5 (diff)
Fix: error out when packet doesn't fit into buffer
-rw-r--r--src/header.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/header.rs b/src/header.rs
index 9a676b2..a97d8d7 100644
--- a/src/header.rs
+++ b/src/header.rs
@@ -228,7 +228,7 @@ impl<'a> Header<'a> {
code: Code,
session_id: u16,
) -> Result<Header, ParseError> {
- Self::ensure_minimal_buffer_length(buffer);
+ Self::ensure_minimal_buffer_length(buffer)?;
// set version and type
buffer[0] = 0x11;
@@ -450,7 +450,7 @@ mod tests {
}
#[test]
- fn buffer_less_than_minimal_required_size() {
+ fn buffer_less_than_minimal_required_size_for_parsing() {
let buffer = &mut [0u8; 4];
let err = expect_parse_error(buffer);
assert!(match err {
@@ -460,6 +460,12 @@ mod tests {
}
#[test]
+ fn buffer_less_than_minimal_required_size_for_creation() {
+ let buffer = &mut [0u8; 4];
+ assert!(Header::create_padi(buffer).is_err());
+ }
+
+ #[test]
fn invalid_pppoe_version() {
let buffer = &mut [0u8; 20];
let err = expect_parse_error(buffer);