From 170a1d27a70889fed574a4cbe08e94e4369dba0a Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Tue, 16 Apr 2024 21:57:30 -0400 Subject: [PATCH] Add invalid data test for Lgb, add a simple check for invalid data --- src/lgb.rs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/lgb.rs b/src/lgb.rs index 148f1f8..844ec0d 100644 --- a/src/lgb.rs +++ b/src/lgb.rs @@ -485,9 +485,12 @@ impl Layer { let mut cursor = Cursor::new(buffer); let file_header = LgbHeader::read(&mut cursor).unwrap(); - + if file_header.file_size < 0 || file_header.total_chunk_count < 0 { + return None; + } + let chunk_header = LayerChunk::read(&mut cursor).unwrap(); - + let old_pos = cursor.position(); let mut layer_offsets = vec![0i32; chunk_header.layer_count as usize]; @@ -525,3 +528,22 @@ impl Layer { }) } } + +#[cfg(test)] +mod tests { + use std::fs::read; + use std::path::PathBuf; + + use super::*; + + #[test] + fn test_invalid() { + let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + d.push("resources/tests"); + d.push("random"); + + // Feeding it invalid data should not panic + Layer::from_existing(&read(d).unwrap()); + } +} +